CORS标头'缺少访问控制允许原点

CORS header 'Access-Control-Allow-Origin missing

本文关键字:许原点 原点 访问控制 标头 CORS      更新时间:2024-03-11

我正试图调用一些从本地网页编写的WCF服务,但我遇到了左右交叉的错误,但只有当我尝试从JavaScript调用时才会出现。

几个月来,我断断续续地试图解决这个问题,但没有成功;我无计可施。我已经摆弄了web.config、网站的IIS响应标头、无数博客、其他SO帖子和enable-cors.org好几个小时了,但我仍然碰壁。

调用WCF服务的JS代码:

var url = "http://(foo)/WCF.svc/Bar"
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.onload = function () {
    console.log(xhr.responseText);
}
xhr.send(); 

WCF服务的C#函数:

[OperationContract, WebInvoke(UriTemplate = "/Bar/", Method = "GET")]
public string Bar() { return "Success!"; }

WCF服务的Web.config的相关段:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="*" />
            <add name="Access-Control-Allow-Methods" value="*" />
            <add name="Access-Control-Max-Age" value="1728000" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

正如我之前所说,来自其他语言的HTTP请求没有问题。C#和ActionScript3使用相同的WCF调用可以很好地工作,但JS不会让我克服这些错误。

有人知道可能发生了什么吗?

问题出在这两行上

        <add name="Access-Control-Allow-Headers" value="*" />
        <add name="Access-Control-Allow-Methods" value="*" />

*不是这两个头的有效值

阅读此处的规范