Javascript &引用;“混合内容”;在HTTPS页面中访问HTTP时出错

Javascript &引用;“混合内容”;在HTTPS页面中访问HTTP时出错,javascript,ssl,iframe,mixed-content,Javascript,Ssl,Iframe,Mixed Content,我们的内部网站必须与客户端.NET应用程序进行通信。我们在客户端应用程序上使用一个HttpListener(on)和一个在页面中引用此url的iframe。当页面是HTTP时,它的工作就像一个符咒 问题: 当站点为HTTPS时,在较新的浏览器中会显示“混合内容”Javascript错误,请求不会到达客户端 我相信当使用Ajax请求而不是iframe时,也会发生此错误 我还尝试将自签名证书绑定到侦听器和侦听器(适用于IE),但由于Firefox有自己的证书存储,因此很难在那里自动安装(IE使用易于

我们的内部网站必须与客户端.NET应用程序进行通信。我们在客户端应用程序上使用一个HttpListener(on)和一个在页面中引用此url的iframe。当页面是HTTP时,它的工作就像一个符咒

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

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

我还尝试将自签名证书绑定到侦听器和侦听器(适用于IE),但由于Firefox有自己的证书存储,因此很难在那里自动安装(IE使用易于安装的Windows证书存储)

那么,当站点本身是适用于FF和IE的HTTPS时,是否有人知道向发出请求的可能性

谢谢

将iframe更改为:

<script>
    var request = new XMLHTTPRequest();
    request.open("GET", "http://localhost:[port]/?action=doStuff");
    request.send();
</script>

var request=new XMLHTTPRequest();
请求。打开(“获取”http://localhost:[端口]/?操作=doStuff”);
request.send();
您还需要对应用程序进行一些小的修改

它需要实现一个OPTIONS方法,并且需要返回一个跨源资源策略。这听起来比实际困难得多,它只需要返回一个回复,并将
accesscontrolalloworigin
标题设置为
*

GET
请求的响应也必须具有此标头


如果您知道所有试图在localhost上与您的应用程序通信的域,您可以将
*
更改为白名单,甚至只更改一个值。

为什么不在https上运行所有内容?为什么你在第一个地方有混合内容?我写的是:它非常丑陋,自动安装证书到火狐(你需要使用NSS工具,并有C++可重新分配2010安装)哦,对,所以<代码>http://location:[端口]实际上不是一个网站,而是.NET应用程序的API?真奇怪。为什么不使用XMLHTTPRequest?是的。HttpListener是一个.NET类,它在传入请求时侦听到某个url:port,在我的示例中是http://localhost:[port]。通过这种方式,我可以轻松地与我的.NET应用程序交谈,而无需安装一些浏览器加载项,如ActiveX或其他东西(如http://localhost:[port]/?action=doStuff)。我应该在哪里使用XMLHTTPRequest?在页面上而不是在iframe上?它不会也抛出一个混合内容错误吗?谢谢好吧,你又失去了我,为什么iframe会出现?mithinks认为这无论如何都会被阻止为混合内容,因为请求会从https到httpYep,Grundy说:仍然发生“混合内容”错误。我的请求甚至不会到达我的客户。