Снимки Snap.com не подчиняются той же политике Orgin? - PullRequest
0 голосов
/ 26 января 2009

Я пытаюсь написать некоторый Javascript, который показывает данные, основанные на HTTP-запросе GET, на сервер в другом домене. Из того, что я прочитал, это сделано сложно из-за SOP (та же политика происхождения).

Мне любопытно, как работают snap.com «Snap Shots» (превью веб-страницы). Вот пример страницы: http://premshree.livejournal.com/66129.html

Может ли кто-нибудь объяснить, как это возможно? Чтобы включить «моментальные снимки» snap.com, все, что вам нужно сделать, это добавить Javascrpt в ваш заголовок. Кажется, что пример веб-страницы не подчиняется СОП.

Ответы [ 2 ]

1 голос
/ 05 февраля 2009

Следуя ответу Яна, вы можете заставить AJAX преодолеть барьер домена, представленный SOP, используя JSONP. Что такое JSONP? Это тот же объект JSON, который мы все знаем и любим, но он обернут функцией: JSON: { prop1: "a", prop2: 7 }

JSONP: myfunction( { prop1: "a", prop2: 7 }); Как видите, объект JSON передается в качестве параметра функции myfunction. Таким образом, если вам нужно было связаться с ресурсом сценария, который размещен в другом домене, с помощью простого тега script, и этот ресурс вернул данные JSONP, то вы можете просто определить функцию myfunction, которая принимает объект JSON, а затем выполнить что-то с этим. JQuery поддерживает вызовы JSONP Ajax с использованием метода getJSON . Вместо вызова AJAX jQuery вставляет тег script, указывающий на URL-адрес, с которого вы пытаетесь получить данные. Когда скрипт загружается, ваша функция обратного вызова выполняется и вуаля! - у вас есть данные JSON! Эта техника имеет 3 предпосылки.

  1. Служба, из которой вы пытаетесь запросить данные, возвращает JSON (по умолчанию или по запросу с использованием параметра).
  2. Служба поддерживает JSONP, позволяя вам указать функцию обратного вызова для обтекания данных JSON.
  3. Вы достаточно доверяете этому внешнему источнику, чтобы его код мог выполняться на вашем сайте.
1 голос
/ 26 января 2009

JavaScript «Снимки» размещен на snap.com, поэтому он имеет доступ ко всем элементам snap.com, то есть к предварительным просмотрам страниц, поскольку фактически подчиняется той же Политике происхождения. Однако он не сможет совершать какие-либо звонки на любые страницы livejournal.com.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...