Обходя ту же политику источника в JavaScript без серверных сценариев

У меня есть среда, которая не позволяет сторону сервера, пишущую сценарий действительно (чрезвычайно трудно "установить" сценарий на сервере). Я пытался использовать iframe для нарушения той же политики источника JavaScript; однако, это не работало. Есть ли какие-либо другие обходные решения, о которых я не знаю?

Спасибо!

10
задан Parris 14 January 2010 в 19:40
поделиться

2 ответа

Как David Dorward упомянутый, JSON-P является самым простым и самым быстрым; однако, существует другой прием, конкретно с помощью двух iframes.

Два обходят эту проблему, не используя JSONP, можно сделать следующее. Эта техника предполагает, что у вас есть своего рода доступ разработки к родительской странице.

на двух доменах/сайтах существует три страницы.

  1. страница
  2. Content страницы
  3. Parent Междоменная коммуникационная страница (иначе "xdcomm")

Страницы родитель и xdcomm страницы размещаются на том же домене, страница содержания размещается на любом другом домене. Страница содержания встраивается как iframe на родительской странице, и xdcomm страница встраивается как скрытый iframe на странице содержания.

enter image description here

xdcomm страница содержит очень простой сценарий, который обнаруживает, ПОЛУЧАЮТ параметры в строке запроса, синтаксические анализы, которые представляют в виде строки для метод и args переменные (где args является JSON закодированная последовательность), и затем выполняют указанный метод с указанными аргументами на родительской странице. Пример может быть замечен здесь (источник представления).

Даже при том, что Та же политика Источника JavaScript ограничивает код одного домена от доступа к тому из другого, не имеет значения, если домены вкладываются друг в друге (домен A, вложенный в домене B, вложенном в домене A).

Так, короче говоря страница содержания отправляет сообщения в родительскую страницу через xdcomm страницу путем изменения источника iframe к чему-то как http://domaina.com/xdcomm.html?src=foo&args= [1,2,3,4] . Это было бы эквивалентно выполнению нечто (1,2,3,4) на родительской странице.

кроме того, знайте, что уже существуют библиотеки, которые помогают вам с этим, такой как easyxdm. Что я объяснил, вот основание одного из методов, что они используют, и в то время как это не могло бы быть как воображение, это - конечно, полностью функционирование и легкая реализация.

28
ответ дан 3 December 2019 в 15:06
поделиться

, надеюсь, нет, так как это будет дыре для безопасности! :)

Но если обе ваши сайты являются субдоменами на том же домене, возможно, документ. Добродомера может помочь.

2
ответ дан 3 December 2019 в 15:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: