我将一些HTML加载到iframe中,但是当引用的文件使用的是http(而不是https)时,出现以下错误:
[已屏蔽] {current_pagename}中的页面运行了来自{referenced_filename}的不安全内容
有什么办法可以关闭它或解决它吗?
iframe没有src
属性,其内容使用以下方法设置:
frame.open();
frame.write(html);
frame.close();
我将一些HTML加载到iframe中,但是当引用的文件使用的是http(而不是https)时,出现以下错误:
[已屏蔽] {current_pagename}中的页面运行了来自{referenced_filename}的不安全内容
有什么办法可以关闭它或解决它吗?
iframe没有src
属性,其内容使用以下方法设置:
frame.open();
frame.write(html);
frame.close();
Answers:
基于此问题的普遍性,我认为您需要在某些在线服务器上设置自己的HTTPS代理。请执行以下步骤:
如果仅通过file_get_contents或类似文件下载远程站点内容,您仍然可以使用不安全的内容链接。您必须使用正则表达式找到它们并替换它们。图片很难解析,但是在这里找到了解决方法:http : //foundationphp.com/tutorials/image_proxy.php
注意:虽然该解决方案在2014年编写时可能已在某些浏览器中运行,但不再起作用。
iframe
现代浏览器不允许导航或重定向到嵌入HTTPS页面中的HTTP URL ,即使框架以HTTPS URL开始也是如此。
我创建的最好的解决方案是简单地使用google作为ssl代理...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
经过测试并在Firefox中工作。
其他方法:
使用诸如embed.ly之类的第三方(但这实际上仅对众所周知的http API有用)。
在您控制的https页面上创建自己的重定向脚本(在相对链接的页面上执行简单的javascript重定向就可以解决问题。例如:(您可以使用任何语言/方法)
https://example.com
有一个iframe链接到...
https://example.com/utilities/redirect.html
其中有一个简单的js重定向脚本,例如...
document.location.href ="http://thenonsslsite.com";
或者,您可以添加RSS feed或编写一些阅读器/解析器以读取http站点并将其显示在https站点中。
您还可以/应该向http站点所有者推荐他们创建ssl连接。如果没有其他原因,它会增加seo。
除非您可以让http网站所有者创建ssl证书,否则最安全和永久的解决方案是创建一个RSS feed,以获取所需的内容(假设您实际上并没有在http网站上“做任何事情”,即说不登录任何系统)。
真正的问题是,在https站点内包含http元素表示安全问题。没有完全消除这种安全风险的方法,因此上述内容只是当前的解决方法。
请注意,您可以在大多数浏览器(您自己,而不是其他浏览器)中禁用此安全措施。还要注意,随着时间的流逝,这些“骇客”可能会过时。
我知道这是一篇旧文章,但另一个解决方案是使用cURL,例如:
redirect.php:
<?php
if (isset($_GET['url'])) {
$url = $_GET['url'];
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
}
然后在您的iframe代码中,如下所示:
<iframe src="/redirect.php?url=http://www.example.com/"></iframe>
这只是一个说明这个想法的简单示例-它不会清理URL,也不会阻止其他人出于自己的目的使用redirect.php。在您自己的站点的上下文中考虑这些事情。
好处是,它更灵活。例如,您可以对curl的$ data添加一些验证,以确保它确实是您想要的,然后再显示它-例如,进行测试以确保它不是404,并准备好自己的替代内容是。
另外-对于有些重要的事情,我有点依赖Javascript重定向。
干杯!
example.com
SSL 的域。我正在嵌入example.net
没有SSL 的iframe 。在example.com
具有像一个链接href="https://stackoverflow.com/path/file.html"
,并同时点击它,它是开放的https://example.com/path/file.html
,而不是http://example.net/path/file.html
加<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
在头上
参考:http : //thehackernews.com/2015/04/disable-mixed-content-warning.html
当您尝试在https页面上显示不安全的内容时,在大多数浏览器中,您始终会收到警告,提示内容被阻止。如果您要嵌入其他未位于ssl后面的站点中的内容,这将非常棘手。您可以在您自己的浏览器中关闭警告或删除阻止,但是对于其他访问者来说,这是一个问题。
一种方法是加载内容服务器端,并将图像和其他内容保存到服务器,然后从https显示它们。
您也可以尝试使用embed.ly之类的服务,并通过它们获取内容。他们支持将内容隐藏在https之后。
您可以尝试使用PHP或其他服务器端语言来刮取所需的任何内容,然后将iframe放入被刮取的内容。这是PHP的示例:
scrapedcontent.php:
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
index.html:
<iframe src="scrapedcontent.php"></iframe>
您只需要使用Google作为代理服务器即可。
https://www.google.ie/gwt/x?u=[YourHttpLink]。
<iframe src="https://www.google.ie/gwt/x?u=[Your http link]"></frame>
它为我工作。
积分:-https: //www.wikihow.com/Use-Google-As-a-Proxy
使用您自己的HTTPS到HTTP反向代理。
如果您的用例大约是几个,很少会更改要嵌入的URL iframe
,则可以在自己的服务器上简单地为此设置反向代理并对其进行配置,以使https
服务器上的一个http
URL 映射到代理服务器上的一个URL。由于反向代理完全在服务器端,因此浏览器无法发现它只是在与真实网站的代理进行对话,因此不会抱怨,因为与代理的连接正确使用了SSL。
例如,如果您使用Apache2作为Web服务器,则请参阅以下说明以创建反向代理。
mitmproxy
是调试工具,而不是生产代理系统。ngrok
是隧道服务,主要用于开发服务器,我不知道它对此有何用处。