Могу ли я сделать XMLHttpRequest в другом домене?
Есть ли способ использовать 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);
Выполнение этого на стороне сервера не является вариантом, по крайней мере, тогда мне не придется спрашивать
Ответы
Ответ 1
Нет, не сейчас. Я считаю, что я читал, что планы/дизайн находятся в работе групп стандартов на будущее, поэтому мы можем безопасно это сделать.
Уязвимости межсайтового скриптинга будут распространяться по другим причинам.
JSONP - это возможное решение, если поддерживает API других сайтов.
Ответ 2
HTML5 теперь поддерживает запросы Cross Origin с помощью уровня XmlHttpRequest уровня 2:
http://www.html5rocks.com/en/tutorials/cors/
Ответ 3
Это проблема безопасности, большинство (всех?) браузеров не позволят вам это сделать. Вы можете использовать скрытый IFrame для вашей выборки, но достаточно сложно, чтобы я просто использовал сервер (или переключился на другой язык, если мне не нужно запускать в браузере)
Ответ 4
Вы не можете выполнить запрос перекрестного домена, например. от 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/
Ответ 5
Это невозможно из-за SOP (той же политики происхождения), что браузер в эти дни ограничивает атаки XSS.
Вам нужно будет использовать серверную часть script (PHP или что-то еще).
Ответ 6
Вы можете попытаться сделать что-то на сервере. Поэтому в своем приложении вы делаете запрос на удаленный сайт, получая результат, и возвращаете его своему клиенту. Затем вызов AJAX вызывает только ваш собственный сервер и работает.
Ответ 7
Можно создать XHR в другом домене с HTML5. Вы также можете сделать другой запрос протокола с XHR при общении с HTTP на другой веб-сайт.