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