Как можно использовать удаленные веб-службы из клиентского скрипта? [закрыто]

StackOverflow https://stackoverflow.com/questions/324771

Вопрос

Из того, что я понимаю, из-за & "та же политика происхождения &"; В современных браузерах невозможно получить данные из XmlHttpRequest, отправленного в другой домен, чем исходный домен Javascript.

У меня практически нет опыта в этом вопросе, поэтому я запутался из-за невозможности использования веб-сервисов в Javascript. Означает ли это, что веб-приложения с функциональностью Ajax могут взаимодействовать только друг с другом без вызова служб, предоставляемых другими доменами? Как сделать & Quot; mash-ups & Quot; Работа ? Я предполагаю, что сервисы потребляются на стороне сервера, затем данные передаются клиенту через локальные Ajax-вызовы. Я не знаю.

Единственный способ добиться потребления услуг на стороне клиента - это получить файл Javascript непосредственно из домена целевого веб-сервиса через тег <script>, а затем использовать его API для взаимодействия с удаленным доменом.

Может ли кто-нибудь просветить меня?

Это было полезно?

Решение

В вашем вопросе вы упомянули < script > трюк. JSONP основан на этом. Это было официально предложено почти 3 года назад Бобом Ипполито . Это не дает вам права говорить о происхождении скрипта & # 8212; происхождение определяется вашей веб-страницей, а не тем, что еще включает. Это работает только потому, что сервер включает JSON в функцию обратного вызова, которая должна быть определена в вашем коде и будет выполняться & Lt; script & Gt; при загрузке. Самый известный пример JSONP - это сервисы Yahoo, включая Flickr.

Другой способ - использовать window.name для передачи информации. Этот метод был подробно описан Крисом Ципом четыре месяца назад . Кроме того, его статья сравнивает транспорт window.name с JSONP. Я не знаю ни одного известного поставщика услуг, который бы поддерживал этот новый транспорт. Очевидно, со временем это изменится.

Конечно, я должен упомянуть о предстоящем Microsoft XDomainRequest . Планируется, что он будет поставляться с IE8, и никакие другие поставщики не взяли на себя обязательство поддерживать его, но он был представлен для включения в HTML 5. XDR - это полезная функциональность, но я подозреваю, что перед изменением он будет несколько раз изменен. принимаются.

Если вы просматривали ссылки, вы, вероятно, уже знаете, что все эти методы требуют определенного уровня взаимодействия со стороннего сервера. Вы не можете использовать случайные услуги по желанию. Если вам действительно нужно использовать неработающую службу, единственное решение - прокси-сервер через собственный сервер со всеми связанными проблемами: сомнительная законность, снижение производительности, увеличение нагрузки на ваш сервер, уменьшение количества соединений между браузером пользователя и ваш сервер и т. д.

Другие советы

Взгляните на JSONP, который работает вокруг той же политики происхождения, используя в значительной степени подход, который вы описываете, просто убедитесь, что вы доверяете тому, откуда его взяли ...

scroll top