javascript - "Mixed content"在HTTPS页面访问HTTP出错

标签 javascript ssl iframe mixed-content

我们的 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/

相关文章:

javascript - href 链接在特定位置处带有目标空白

c# - 使用 SSL/TLS 协议(protocol)来保护与 m2mqtt 的通信

.net - .NET 是否支持 TLS-PSK?

android - okHTTP 无法找到可接受的协议(protocol)(android)

javascript - iframe 之外的 getElementById

jquery - 为什么这个jsfiddle不起作用? (基本的Statelistener youtube iframe视频)

javascript - JSON 循环仅产生 1 个结果

javascript - 如何加载嵌套 3 种状态深度的 UI-router ui-view 模板?

iframe - Youtube iFrame API setPlaybackQuality 在移动设备上被忽略

javascript - 在常规 JavaScript 文件中导入 NodeJS 文件