CORS标题'Access-Control-Allow-Origin缺失

时间:2016-04-08 00:59:26

标签: javascript wcf iis xmlhttprequest

我正在尝试调用我从本地网页编写的一些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#和ActionScript 3在使用相同的WCF调用时工作正常,但JS不会让我通过这些错误。

有谁知道可能会发生什么?

1 个答案:

答案 0 :(得分:0)

问题在于这两行

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

*不是这两个标头的有效值

阅读规范here