HTTP to HTTPS silverlight wcf 跨域问题

本文关键字:问题 wcf silverlight to HTTPS HTTP | 更新日期: 2023-09-27 18:32:42

我一直在查看整个网站和堆栈溢出,我可以解决我的问题。

网络设置

我的网络在我的暂存世界中的方式是,我让客户端在 443 端口 - https 上查看我的 Web 应用程序,但底层结构正在侦听 80 端口 - http。因此,当我的应用程序相互通信时,它在端口 80 上,但当客户端访问该站点时,它的端口为 443。例如,从 silverlight 调用的 svc 将位于端口 80 上。

我还应该指出,在我的暂存和测试域上:我有一个 Web 服务器充当我的应用程序服务器的门户;但这并不重要,因为我能够在测试中使用它。只是分期具有HTTP转发到HTTPS。

应用

我有一个 silverlight xap 文件,该文件与使用 IIS 6 的托管 Web 应用程序位于同一域中。

现在,由于我的 silverlight xap 文件和我的 Web 应用程序位于同一域中,因此在开发和测试上运行它没有问题,但是当我尝试部署到暂存时,我遇到了一个奇怪的跨域引用问题:

"System.ServiceModel.CommunicationException: 尝试向 URI 发出请求时出错。这可能是由于在没有适当的跨域策略的情况下尝试以跨域方式访问服务,或者策略不适合 Soap 服务。

四处挖掘,我意识到我的应用程序认为我的 xap(或我正在调用的服务(和我的 Web 应用程序位于不同的域上,并自动查找跨域.xml和客户端访问策略.xml文件,我真的无法阻止它。但是,在我的应用程序中,情况并非如此。它们都驻留在同一个域中。我使用过提琴手,但我没有看到有关另一个域甚至子域的任何内容。

浏览器问题

我发现的另一件奇怪的事情是chrome vs ie的问题:在chrome上,它找到跨域.xml和clientaccesspolicy.xml告诉我它不安全,然后它从https端进行另一次获取,表示404错误。但是,在IE上,我得到了302重定向。在微软关于客户端访问政策的文档中.xml您不应该从 xml 文件进行任何重定向;这里提到:http://msdn.microsoft.com/en-US/Library/CC838250(v=vs.95(.aspx

所以我的问题是,如果我的应用程序和 xap 在同一个域上,为什么这些 xml 试图被获取?是因为我使用的是 DNS 而不是 IP 地址吗?我还偶然发现了这个网站:http://msdn.microsoft.com/en-us/library/ff921170(v=pandp.20(.aspx

它指出:为了避免跨域调用问题,远程模块的 XAP 文件应与主应用程序位于同一域中;当像这样部署时,ModuleCatalog 上的 Ref 属性应该是相对于 Web 服务器上主 XAP 文件位置的统一资源标识符 (URI(。

这甚至意味着什么??

编辑

好的,所以我将服务更改为指向https而不是http。但是出现了新的错误:提供的 URI 方案"https"无效;预期的 HTTP。

好消息是,它甚至不检查跨域.xml或客户端访问策略.xml;所以它现在意识到它位于同一域上。但是现在它期望在端口 80 上提供服务,但名称必须遵循 https://才能工作。

我认为我现在唯一的解决方案是将其分解为虚拟目录,使其成为自己网站的根节点,并将整个事情制作为 443。省得我头疼。

HTTP to HTTPS silverlight wcf 跨域问题

听起来您正在一个有负载均衡器卸载 SSL 流量的环境中工作。 在此情况下,您的客户端 (Silverlight( 需要配置为 HTTPS,并且您的服务器必须配置为 HTTP。 这是因为双方之间的设备正在解密SSL数据。

在这种情况下,除了正常的客户端和服务器端配置外,服务器端代码还需要对请求的地址更加宽容。

您可能还需要向服务实现添加一个属性,以允许客户端通过 HTTPS 调用,但让您的服务侦听 HTTP。

将此添加到您的服务中:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]

这允许您的客户端调用 https://my.domain.com/service.svc 并使您的服务器处于 http://my.domain.com/service.svc 状态。

以下是一些可能有所帮助的链接:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/b5ae495b-f5fb-4eed-ae21-2b2280d4fec3/address-filter-mismatch-wcf-addressing

http://www.i-m-code.com/blog/blog/2011/11/30/hosting-silverlight-over-http-under-f5-big-ip/

http://www.i-m-code.com/blog/blog/2011/08/18/hosting-silverlight-under-https/