Могу ли я сделать XMLHttpRequest для другого домена? - PullRequest
16 голосов
/ 28 ноября 2008

Есть ли способ использовать XMLHttpRequest в сочетании с другими доменами?

Я бы хотел проанализировать некоторые XML-данные из Google без необходимости использовать сервер, поэтому его запуск минимально сложен.

var req = getXmlHttpRequestObject();
...
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true);
        req.setRequestHeader("Content-Type","text/xml");
        req.onreadystatechange = setMessage;
        req.send(null);

Делать это на стороне сервера - это не вариант, по крайней мере, мне бы не пришлось спрашивать

Ответы [ 7 ]

11 голосов
/ 28 ноября 2008

Нет, не сейчас. Я считаю, что я прочитал, что планы / проекты находятся в разработке группами стандартов на будущее, поэтому мы можем безопасно это сделать.

Уязвимости межсайтового скриптинга будут распространяться иным способом.

JSONP является возможным решением, если API других сайтов поддерживает.

7 голосов
/ 10 апреля 2013

HTML5 теперь поддерживает запросы Cross Origin с XmlHttpRequest уровня 2, посмотрите на:

http://www.html5rocks.com/en/tutorials/cors/

2 голосов
/ 28 ноября 2008

Это проблема безопасности, большинство (все?) Браузеры не позволяют вам этого делать. Вы можете использовать скрытый IFrame для выполнения выборки, но он достаточно сложен, чтобы я просто использовал сервер (или переключился на другой язык, если мне не нужно работать в браузере)

1 голос
/ 13 ноября 2015

Вы не можете выполнять междоменный запрос, например, из example1.com в example2.com через XMLHttpRequest или jQuery (который является оболочкой XMLHttpRequest) из-за проблемы безопасности на стороне клиента (браузер). Это может быть эффективно реализовано в современном браузере, поддерживающем HTML5 через CORS (совместное использование ресурсов из разных источников, которое не может быть доступно в каждом клиентском браузере. Поэтому решение заключается в том, чтобы вставить тег script в example1.com example2.com, и это решение известно как JSON-P (JSON с отступом), имя может вводить в заблуждение, поскольку данные могут быть в любом формате, обслуживаемом сервером (example2.com). Код его реализации приведен по этой ссылке http://newtechinfo.net/jsonp-for-cross-domain-ajax/

0 голосов
/ 16 сентября 2013

Можно создать XHR для другого домена с HTML5.Вы также можете сделать другой запрос протокола с XHR при обмене данными по HTTP с другим веб-сайтом.

0 голосов
/ 28 ноября 2008

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

0 голосов
/ 28 ноября 2008

Это невозможно из-за SOP (той же политики происхождения), которую браузер имеет в наши дни для ограничения атак XSS.
Вам придется использовать серверный скрипт (PHP или что-то в этом роде).

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