如何在 https 站点的 iframe 中允许 http 内容

新手上路,请多包涵

我将一些 HTML 加载到 iframe 中,但是当引用的文件使用的是 http 而不是 https 时,我收到以下错误:

[已阻止] {current_pagename} 的页面运行来自 {referenced_filename} 的不安全内容

有什么办法可以关闭它或绕过它吗?

iframe 没有 src 属性,内容使用以下方式设置:

 frame.open();
frame.write(html);
frame.close();

原文由 georgephillips 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.3k
2 个回答

基于这个问题的普遍性,我认为,您需要在某些在线服务器上设置自己的 HTTPS 代理。执行以下步骤:

  • 准备代理服务器 - 安装 IIS、Apache
  • 获取有效的 SSL 证书以避免安全错误(例如来自 startssl.com 的免费证书)
  • 编写一个包装器,它将下载不安全的内容(方法见下文)
  • 从您的网站/应用程序获取 https://yourproxy.com/?page=http://insecurepage.com

如果您只是通过 file_get_contents 或类似方式下载远程站点内容,您仍然可以拥有指向内容的不安全链接。您必须使用正则表达式找到它们并进行替换。图像很难解决,但我在这里找到了解决方法:http: //foundationphp.com/tutorials/image_proxy.php

原文由 panpernicek 发布,翻译遵循 CC BY-SA 3.0 许可协议

注意: 虽然此解决方案在 2014 年编写时可能在某些浏览器中有效,但它不再有效。现代浏览器不允许在嵌入 HTTPS 页面的 iframe 中导航或重定向到 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 提要或编写一些阅读器/解析器来读取 http 站点并将其显示在您的 https 站点中。

  • 您还可以/应该向 http 站点所有者推荐他们创建 ssl 连接。如果没有其他原因, 它会增加 seo

除非你能让 http 站点所有者创建一个 ssl 证书,否则最安全和永久的解决方案是创建一个 RSS 提要来获取你需要的内容(大概你实际上并没有在 http 站点上“做”任何事情 - 即说不登录任何系统)。

真正的问题是在 https 站点中包含 http 元素表示安全问题。没有完全解决此安全风险的方法,因此以上只是当前的解决方法。

请注意,您可以在大多数浏览器中禁用此安全措施(您自己,而不是其他人)。另请注意,这些“黑客”可能会随着时间的推移而过时。

原文由 Matthew Peters 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题