2014-10-14 2 views
0

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

XMLHttpRequest не может загрузить ... Нет «Access-Control-allow- Заголовок Origin присутствует на запрошенном ресурсе.

вот мой код:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     (function() { 
      $.support.cors = true; 
      $.ajax({ 
       type: "GET", url: "http://zhettoapi.azurewebsites.net/api/Values?product=Coca Cola", success: function (data) { 
        window.alert("" + data); 
        //example of setting innerHTML of object 
        document.getElementById("myElement").innerHTML = "The number is:" + data; 
       }, error: function (xhr, status, error) { 
        // Display a generic error for now. 
        alert("Error: " + xhr + " " + status + " " + error); 
       } 
      }); 
     })(); 
    </script> 
</head> 
<body> 
    <div id="myElement"></div> 
</body> 
</html> 
+1

ошибка говорит вам именно эту проблему. Сайт не позволяет совершать перекрестные вызовы. https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy – epascarello

+0

Проверьте, что если api предоставляет запрос 'JSONP', то используйте его, он поддерживает CORS. - http://stackoverflow.com/questions/5943630/basic-example-of-using-ajax-with-jsonp –

ответ

1

Поскольку я могу видеть, что использование использовали azurewebsites, упомянутые в Get URL ("http://zhettoapi.**azurewebsites**.net/api/Values....), и у меня есть некоторый опыт в том, что я думал о решении вашей проблемы, даже если этот вопрос не был помечен Azure.

Успение: Вы использовали WebAPI. И развернули на Azure как сайт. (я уверен, это так).

Поскольку вы пытаетесь получить доступ к URL-адресу Azure Web API из другого домена в форме запроса ajax.get, он блокируется из-за безопасности cross domain (CORS). Итак, первое, что нужно сделать, это сделать его (размещенный проект WebAPI). CORS включен.

шаги, чтобы сделать его Корс включен:

  1. Установите это - Microsoft.AspNet.WebApi.Cors Install-Package, используя NuGet
  2. Открыть файл App_Start/WebApiConfig.cs. Добавьте следующий код в метод WebApiConfig.Register.
  3. Затем добавьте [EnableCors] атрибут к классу контроллера:

    со следующими PARAMS

    [EnableCors (происхождение: "http://zhettoapi.azurewebsites.net", заголовки: "", методы: "")]

  4. Повторно развертывайте проект WebAPI.

ИСТОЧНИК - http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

Другие ссылки - http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En

Смежные вопросы