【发布时间】: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