Access-Control-Allow-Origin Ошибка при попытке получить JSON - PullRequest
1 голос
/ 18 марта 2011

Я пытаюсь использовать Bing API, чтобы отозвать предложения по написанию, но продолжаю получать следующее сообщение об ошибке:

XMLHttpRequest не может загрузить http://api.search.live.net/json.aspx?Appid=myIdWasHere&query=explotion&sources=spell. Источник http://myWebServerNameWasHere не разрешен Access-Control-Allow-Origin

Я прочитал пару постов, которые выглядели похожими, затем о CORS, но я все еще немного нечеткий. Что у меня не так в коде ниже?

$.ajax({
  type: 'GET',
  url: 'http://api.search.live.net/json.aspx',
  dataType: 'json',
  data: {
        Appid: '<myIdWasHere>',
        query: 'explotion',
        sources: 'spell'
        },
  beforeSend: function(xhr){
         xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
    }, 
  success: function(data) {    
    alert(data);
    },
  error: function(msg) {    
    alert(this.url + " -Failed"));
  }
});  

Ответы [ 2 ]

1 голос
/ 18 марта 2011

CORS (http://www.w3.org/TR/cors/) - это новый способ создания междоменных запросов с использованием XmlHttpRequest. Поскольку вы делаете запрос из своего домена на api.search.live.net, он считается междоменным запросом. CORS требует для работы на стороне сервера, в частности, Bing должен включать специальный заголовок, который указывает, что междоменные запросы разрешены.

Я предполагаю, что Bing API не разрешает междоменные запросы. Чтобы сделать запрос, вместо этого вы должны изучить использование JSON-P (http://en.wikipedia.org/wiki/JSON#JSONP).. Из их документации видно, что Bing действительно поддерживает JSON-P. Ознакомьтесь с разделом «Пример перечисления обратного вызова» здесь:

http://msdn.microsoft.com/en-us/library/dd250846.aspx

0 голосов
/ 04 января 2013

Старая запись, но Access-Control-Allow-Origin должен находиться на сервере, а не на клиентском / вызывающем домене.

...