我的代码中有关于CORS错误的问题,我运行的.js文件为chrome和firefox提供了错误,但在IE上却没有。我被建议添加响应标头但我很困惑在哪里添加它。请帮助
xhr.open(method, url, true);
我尝试添加xhr.setRequestHeader(" Access-Control-Allow-Origin:*");对它来说,这会有用吗?
答案 0 :(得分:4)
不要在客户端代码中添加xhr.setRequestHeader(“Access-Control-Allow-Origin:*”)。
要允许跨域请求,服务器只需要将Access-Control-Allow-Origin标头添加到响应中。
Access-Control-Allow-Origin的值应该是允许的请求的域名,或者只是*,如果允许任何来源。
Access-Control-Allow-Origin:http://domain1.com或
Access-Control-Allow-Origin:*
如果您正在调用Web API方法,请参考以下测试的代码及其用于其余API的工作。
客户端代码Ajax调用:
function CallAjax() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://localhost:54118/api/values", true);
xhr.onload = function () {
console.log(xhr.responseText);
alert("sucuess");
};
xhr.send();
}
服务器端更改:
在Web API项目中,您必须在Web.config文件中添加以下配置。在 system.webServer 部分下添加以下内容
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
</customHeaders>
</httpProtocol>
这将允许任何域访问资源。
希望这会有所帮助:)