1

我们的 Intranet 网站必须与客户端 .NET 应用程序通信。我们在客户端应用程序上使用 HttpListener(在http://localhost:[port]上)和在页面中引用此 url 的 iframe。当页面是 HTTP 时,它的工作就像一个魅力。

问题:当站点是 HTTPS 时,在较新的浏览器中会显示“混合内容”Javascript 错误,并且请求不会到达客户端。

我相信在使用 Ajax 请求而不是 iframe 时也会发生此错误。

我还尝试将自签名证书绑定到侦听器并在https://localhost:[port]上侦听(适用于 IE),但由于 Firefox 有自己的证书存储,因此很难自动安装它( IE 使用易于安装的 Windows 证书存储)。

那么,当站点本身是适用于 FF 和 IE 的 HTTPS 时,是否有人知道向http://localhost:[port]发出请求的可能性?

谢谢!

4

1 回答 1

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 上与您的应用程序通信的所有域,您可以将其更改*为白名单,甚至只是一个值。

于 2015-10-01T15:04:35.950 回答