Php 将HTTP内容嵌入HTTPS站点

Php 将HTTP内容嵌入HTTPS站点,php,jquery,google-chrome,iframe,https,Php,Jquery,Google Chrome,Iframe,Https,我们有一个统一的门户,它通过基于jQuery选项卡的界面链接多个服务,使用iFrame显示来自不同服务的内容。我们的门户运行在具有HTTPS/SSL的安全服务器上。虽然我们的大多数外部服务都是HTTPS,但有两个不是。显然,我们意识到混合内容的问题,我们不喜欢在门户中有非https站点的想法,但我们没有选择。直到几天前谷歌将chrome升级到30版,它现在可以无声地屏蔽混合内容,这给我们带来了很多问题。我们联系了外部服务部门,询问他们是否可以将其服务升级到HTTPS,其中一位回来说,他们在未来两

我们有一个统一的门户,它通过基于jQuery选项卡的界面链接多个服务,使用iFrame显示来自不同服务的内容。我们的门户运行在具有HTTPS/SSL的安全服务器上。虽然我们的大多数外部服务都是HTTPS,但有两个不是。显然,我们意识到混合内容的问题,我们不喜欢在门户中有非https站点的想法,但我们没有选择。直到几天前谷歌将chrome升级到30版,它现在可以无声地屏蔽混合内容,这给我们带来了很多问题。我们联系了外部服务部门,询问他们是否可以将其服务升级到HTTPS,其中一位回来说,他们在未来两年内没有计划这样做

显然这是个问题。我们试图通过将此服务打开到一个新的浏览器窗口来解决这个问题,但这是一个相当不雅观的解决方法,如果可能的话,我想把它去掉。是否有任何方法可以使用AJAX或PHP预取有问题的页面,然后在门户iframe中显示它,而不被Chrome阻止

如果有任何建议,我将不胜感激。我确实理解将安全内容与非安全内容混合在一起是多么糟糕的想法,但我别无选择,因为我的经理坚持认为服务必须是门户的一部分

提前谢谢

问候


Alex

一个简单的解决方案是使用反向代理。您可以非常轻松地配置Apache以获取HTTPS连接,从另一个URL获取请求的内容并返回它。看见问题是浏览器必须看到不同的URL/域(您的反向代理),这可能会或可能不会导致cookie或硬编码链接出现问题。

您能否提供一个如何在nginx中设置的示例?我有一个类似的问题,我非常有兴趣尝试一下这个解决方案,但在我的生活中从未代理过任何东西。不,我不太了解nginx,我所能做的就是为您阅读手册。你可以自己做@deceze Reverse proxy在某种程度上是有效的——但它似乎确实会把样式搞得一团糟。@Alex是的,正如我所说,魔鬼可能就在这里的细节中。如果只是几个硬编码的链接,那么您可以在代理上处理结果,以替换那些也要代理的链接。IIRC mod_proxy实际上可以在一定程度上做到这一点。@deceze干杯,伙计。我注意到代理页面试图使用相对路径链接到样式表和js脚本。因此,我只是将脚本下载到本地服务器并重试。。虽然我取得了一定程度的成功,但它仍然不能正常工作。:/但这是我最接近解决问题的一次。所以我要投票接受答案。再次干杯,伙计。我想问题只发生在JSoverHTTP上。如果可以将嵌入的内容剥离为html/css/图像,Chrome似乎仍然可以显示它们。@Blazemonger使用Apache的mod_代理更直接,可以简单到.htaccess文件中的一行。:)它的开销也比在PHP中做同样的事情要小得多。iFrame是个问题,即使你只是请求一个没有html/javscript的纯文本页面。我同意。。。问题不在于获取非HTTPS页面,而在于试图在嵌入HTTPS页面的iframe中显示它。