ajax GET - XMLHttpRequest无法加载

时间:2014-10-14 17:04:42

标签: javascript ajax html5 azure asp.net-web-api

我试图从外部api获取数据,但是 我一直收到错误消息:

XMLHttpRequest无法加载... No' 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>

2 个答案:

答案 0 :(得分:1)

由于我可以看到使用已使用Get url(azurewebsites)中提到的"http://zhettoapi.**azurewebsites**.net/api/Values....,并且我对此有一些经验,我想解决您的问题,即使此问题未被标记与Azure

假设:您已使用WebAPI。并在Azure上作为网站部署。 (我确定,是的。)

由于您尝试以ajax.get请求的形式从其他域访问Azure Web API网址,因此会因cross domain(CORS)安全性而被阻止。首先,这里是使(托管的WebAPI项目)启用CORS。

启用CORS的步骤:

  1. 使用NuGet
  2. 安装 - 安装包Microsoft.AspNet.WebApi.Cors
  3. 打开文件App_Start / WebApiConfig.cs。将以下代码添加到WebApiConfig.Register方法。
  4. 接下来,将[EnableCors]属性添加到Controller类:

    以下参数

    [EnableCors(来源:“http://zhettoapi.azurewebsites.net”,标题:“”,方法:“”)]

  5. 重新部署您的WebAPI项目。

  6. 消息来源 - 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

答案 1 :(得分:1)