我试图从外部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>
答案 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的步骤:
接下来,将[EnableCors]属性添加到Controller类:
以下参数
[EnableCors(来源:“http://zhettoapi.azurewebsites.net”,标题:“”,方法:“”)]
重新部署您的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
答案 1 :(得分:1)