geo*_*ips 135 html security https iframe http
我将一些HTML加载到iframe中但是当引用的文件使用http而不是https时,我收到以下错误:
[已阻止] {current_pagename}的页面从{referenced_filename}运行了不安全的内容
有什么方法可以关闭它或以任何方式解决它?
iframe没有src
属性,内容使用以下方式设置:
frame.open();
frame.write(html);
frame.close();
Run Code Online (Sandbox Code Playgroud)
Mat*_*ers 129
注意:尽管此解决方案在2014年编写时可能在某些浏览器中有效,但它不再有效.
iframe
现代浏览器不允许导航或重定向到嵌入在HTTPS页面中的HTTP URL ,即使框架是以HTTPS URL开头的.
我创建的最佳解决方案是简单地使用google作为ssl代理...
https://www.google.com/search?q=%http://yourhttpsite.com&btnI=Im+Feeling+Lucky
Run Code Online (Sandbox Code Playgroud)
测试并在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源或编写一些阅读器/解析器来读取http站点并将其显示在您的https站点中.
您可以/还应该向http网站所有者推荐他们创建ssl连接.如果没有其他原因,它增加了seo.
除非您可以让http网站所有者创建一个ssl证书,否则最安全和永久的解决方案是创建一个RSS源来抓取您需要的内容(可能是您实际上并没有在http网站上做任何事情 - 也就是说说不登录任何系统).
真正的问题是在https站点内部使用http元素代表了一个安全问题.对于这种安全风险没有完全犹豫不决的方法,因此以上只是当前的解决方法.
请注意,您可以在大多数浏览器中禁用此安全措施(您自己,而不是其他浏览器).另请注意,随着时间的推移,这些"黑客"可能会过时.
Dav*_* R. 28
我知道这是一个旧帖子,但另一个解决方案是使用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;
}
Run Code Online (Sandbox Code Playgroud)
然后在你的iframe标签中,例如:
<iframe src="/redirect.php?url=http://www.example.com/"></iframe>
Run Code Online (Sandbox Code Playgroud)
这只是一个MINIMAL示例来说明这个想法 - 它不会清理URL,也不会阻止其他人使用redirect.php来达到自己的目的.在您自己的网站上下文中考虑这些事情.
不过,好处是它更灵活.例如,您可以添加curl'd $ data的一些验证,以确保它在显示之前确实是您想要的 - 例如,测试以确保它不是404,并且如果它有自己准备好的备用内容是.
另外 - 我有点厌倦依赖Javascript重定向来处理任何重要的事情.
干杯!
小智 27
基于这个问题的一般性,我认为,您需要在某些服务器上在线设置自己的HTTPS代理.执行以下步骤:
如果您只是通过file_get_contents或类似方式下载远程站点内容,您仍然可以拥有不安全的内容链接.您必须使用正则表达式找到它们并替换它们.图像很难解决,但我找到了解决方法:http://foundationphp.com/tutorials/image_proxy.php
use*_*022 14
添加<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之后.
归档时间: |
|
查看次数: |
320606 次 |
最近记录: |