XMLHttpRequest - проблемы с междоменным вызовом API - PullRequest
1 голос
/ 23 января 2011

Мне нужно сделать очень простой междоменный API-вызов, и из-за накладных расходов / совместимости, я не хочу использовать полнофункциональную среду (такую ​​как jQuery), так как этот простой запрос ajax почти все, что мне нужно сделать. Мне нужно позвонить и сделать запрос GET на http://bar.com со страницы на http://foo.com. Однако я не могу получить доступ к заголовкам HTTP на foo.com. Мне не нужно возвращать данные в браузер.

В настоящее время выполнение кода центра приводит к (в Chrome):

XMLHttpRequest cannot load http://bar.com/api?=x. 
Origin http://foo.com is not allowed by Access-Control-Allow-Origin. 
http://bar.com/api?=x Failed to load resource

Между прочим, даже несмотря на то, что этот вызов выдает ошибку, на bar.com он проходит нормально, поэтому другой вариант - просто перехват этой ошибки и ее игнорирование (?). Несколько незнаком с JS, хотя, так что не уверен, что это не получится в других браузерах?

Столкнулся с этим: http://code.google.com/p/xmlhttprequest/source/browse/trunk/source/XMLHttpRequest.js - не уверен, является ли это полностью излишним для моего использования (накладные расходы довольно важны)?

1 Ответ

3 голосов
/ 23 января 2011

Да, это всегда будет неудачно, если вы не установили заголовок HTTP Access-Control-Allow-Origin для определения определенных доменов, доступ к которым разрешен через XHR.

Один из способов обойти эту проблему - использовать инъекцию скрипта:

function load_script(loc) {
   var s = document.createElement('script');
   s.src = loc;
   document.getElementsByTagName('head')[0].appendChild(s);
}

load_script('http://bar.com/api?=x');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...