我们的Intranet网站必须与客户端.NET应用程序通信。我们在客户端应用上使用HttpListener(在http://localhost:[port]上),在页面中使用引用此网址的iframe。当页面是HTTP时,它就像魅力一样。
问题: 当网站是HTTPS时,混合内容' Javascript错误显示在较新的浏览器中,请求未到达客户端。
我相信在使用Ajax请求而不是iframe时也会发生此错误。
我还试图将自签名证书绑定到监听器并监听https://localhost:[port](适用于IE),但由于Firefox有自己的证书存储,因此很难自动安装它(IE使用易于安装的Windows证书存储区。)
那么,当网站本身是适用于FF和IE的HTTPS时,是否有人知道向http://localhost:[port]发出请求的可能性?
谢谢!
答案 0 :(得分:1)
将iframe更改为:
<script>
var request = new XMLHTTPRequest();
request.open("GET", "http://localhost:[port]/?action=doStuff");
request.send();
</script>
您还需要对您的应用进行一些小修改。
它需要实现OPTIONS方法,并且需要返回跨源资源策略。这听起来比现在困难得多,只需要将Access-Control-Allow-Origin
标题设置为*
即可返回回复。
GET
请求的响应也必须包含此标头。
如果您知道尝试在localhost上与您的应用通信的所有域名,则可以将*
更改为白名单,甚至只更改一个值。