【问题标题】:CORS header 'Access-Control-Allow-Origin missingCORS 标头 'Access-Control-Allow-Origin 缺失
【发布时间】:2016-04-08 00:59:25
【问题描述】:

我正在尝试调用我从本地网页编写的一些 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 不会让我克服这些错误。

有人知道会发生什么吗?

【问题讨论】:

    标签: javascript wcf iis xmlhttprequest


    【解决方案1】:

    问题出在这两行

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

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

    阅读规范here

    【讨论】:

    • 根据我们拥有的另一台服务器,我已将方法设置为“POST、GET、OPTIONS”并将标头设置为“Content-Type”,但问题仍然存在。这也不对吗?
    猜你喜欢
    • 2019-06-19
    • 2021-12-02
    • 2018-03-28
    • 2019-02-07
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多