Javascript 使用CORS+;肥皂+;HTTPS服务的WCF

Javascript 使用CORS+;肥皂+;HTTPS服务的WCF,javascript,wcf,soap,cross-domain,cors,Javascript,Wcf,Soap,Cross Domain,Cors,我正在尝试让CORS为我们的SOAP web服务的新版本工作(该服务在HTTPS下运行,具有用户名/密码身份验证),该服务可以通过JS连接 目前,我正在使它在本地(而不是跨域)正常工作,但一旦它使用不同的域,我就会从WCF Traceviewer获得以下信息。(IIS7中有400个错误请求) System.Xml.XmlException:无法读取邮件正文,因为它是空的。 似乎我的消息检查器甚至没有运行到添加适当的CORS头的部分 以前有没有人经历过这种情况,或者设法让CORS在HTTPS S

我正在尝试让CORS为我们的SOAP web服务的新版本工作(该服务在HTTPS下运行,具有用户名/密码身份验证),该服务可以通过JS连接

目前,我正在使它在本地(而不是跨域)正常工作,但一旦它使用不同的域,我就会从WCF Traceviewer获得以下信息。(IIS7中有400个错误请求)

System.Xml.XmlException:无法读取邮件正文,因为它是空的。
似乎我的消息检查器甚至没有运行到添加适当的CORS头的部分

以前有没有人经历过这种情况,或者设法让CORS在HTTPS SOAP服务下工作

如果你能给我任何建议,我将不胜感激

干杯,
Jamie

实际上,您只能对每个请求实现响应自定义头,如下所示

Response.AppendHeader("Access-Control-Allow-Origin", "*");
有更多的方法可以做到这一点。你只能选择是。您是否希望在wcf文章上启用跨域访问?在跨域上实现了一个使用wcf服务的项目,该项目来自wcf和wcf服务主机。您可以将jsonp与webhttp绑定一起使用。示例答案在这里

或者,您可以实现如下配置:

<system.webServer>
 <httpProtocol>
  <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
 </httpProtocol>
</system.webServer>

至少可以使用jsonp而不是json。你自由了,但很难处理


我想知道您选择了什么。

没有人有任何想法?您是否已查看并尝试过此解决方案?确保内容或允许方法明确允许任何非GET/POST方法。我记得webDAV使用了propget和search,但不确定是否还有其他肥皂剧……感谢您的回复。Peter-是的,我已经在服务器配置中启用了它,并修改了IIs设置。我在Firefox/Chrome中得到了这两个400,但由于Chrome中的错误,它会在之后发送请求(这是有效的),所以我假设它只是通过飞行前的请求,虽然它肯定不会进入我的代码。我使用SOAP,因为它是一个现有的服务。如果这是REST或JSON,可能会容易得多。我已经查看了enable cors站点,但没有成功,所以我想问题在于安全性。好的,您是否可以尝试创建一个代理服务,如myproxy.svc(运行javascript文件的同一站点或启用cors的站点),并通过js corsenabledsite.com/myservice/requestToRealService或myservice/requestToRealService调用。在requestToRealService中,您可以调用服务器上的服务。
<system.webServer>
 <httpProtocol>
  <customHeaders>
   <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
 </httpProtocol>
</system.webServer>