使用CORS + SOAP + WCF进行HTTPS服务

Jam*_*mie 6 javascript wcf soap cross-domain cors

我正在努力让CORS为我们的SOAP Web服务的新版本(在HTTPS下运行并具有用户名/密码认证)工作,这可以通过JS连接.

目前我在本地(不是跨域)正常工作,但很快它使用不同的域我从WCF Traceviewer得到以下内容.(IIS7中400错误请求)

<ExceptionString>System.Xml.XmlException: The body of the message cannot be read because it is empty.</ExceptionString>
Run Code Online (Sandbox Code Playgroud)

它似乎甚至没有到达我的消息检查器运行的部分来添加适当的CORS头.

有没有人经历过这个或者设法让CORS在HTTPS SOAP服务下工作?

我很感激你能给出的任何建议.

干杯,杰米

小智 1

实际上,您可以只实现每个请求的响应自定义标头,如下所示。

Response.AppendHeader("Access-Control-Allow-Origin", "*");
Run Code Online (Sandbox Code Playgroud)

还有更多方法可以做到这一点。你只能选择是。你看wcf上启用跨域访问的文章吗?实现了一个使用来自 wcf 和跨域上的 wcf 服务主机的 wcf 服务的项目。您可以将 jsonp 与 webhttp 绑定一起使用。示例答案在这里;

跨域 jQuery Ajax 请求和 WCF REST 服务

或者你可以像这样实现配置:

<system.webServer>
 <httpProtocol>
  <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
 </httpProtocol>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

要了解实施/启用 cors 的最佳方法,请查看enable-cors.org 网站。我可以轻松找到该链接。

http://enable-cors.org/server_wcf.html

至少你可以使用jsonp代替json。它让你自由,但很难处理。

我想知道你会选择什么。