iframe被屏蔽为不安全的内容,即使iframe是HTTPS

时间:2016-01-27 16:09:01

标签: html iframe https mixed-content

我正在尝试将iframe(包含shellinabox,如果相关的话)嵌入到HTTPS网页中。我用来嵌入iframe的HTML非常简单:

<div class="jumbotron" style="min-height: 400px;">

    <iframe src="https://example.com/shellinabox" style="border:none; min-height: 400px;" width="100%"></iframe>
</div>

但是,Chrome阻止iframe加载,因为它是“不安全的内容”,#34;我必须手动取消阻止才能使其正常工作。 Chrome控制台会报告如下错误:

Mixed Content: The page at 'https://example.com/mainpage/' was loaded over HTTPS, but requested an insecure resource 'http://example.com/shellinabox/'. This request has been blocked; the content must be served over HTTPS.

我对此感到困惑,因为我的HTML代码显然嵌入了example.com/shellinabox的HTTPS版本。此外,当我直接访问https://example.com/shellinabox时,锁定图标为绿色,没有任何内容被阻止,并且该页面上没有任何SSL问题的迹象。

我还在Firefox,IE和MS边缘对此进行了测试,它们都具有相同的行为(因此它不是特定于Chrome的问题)。是什么给了什么?

2 个答案:

答案 0 :(得分:4)

这是一个老问题,但我遇到了同样的问题。我的用例与你的用例略有不同,但希望这会有所帮助。

对我来说,我在python flask服务器上的路由以“/”字符结束。在我的iframe中,我在src的末尾调用没有斜杠的路径并且看到了同样的错误。在iframe中为src添加斜杠对我来说是个窍门。

<iframe src="https://example.com/shellinabox/" style="border:none; min-height: 400px;" width="100%"></iframe>

我不确定为什么src属性末尾缺少斜杠会导致此错误。如果有人能解释原因,我很乐意更新我的答案。

答案 1 :(得分:2)

您的代码正在通过https加载页面,但该页面可能正在尝试通过http加载其他脚本或资源。或者它可能在页面中有通过http发出ajax请求的脚本。您必须检查页面并查看开发人员控制台以确切了解不安全请求的内容。这可能不是你如何创建iframe元素的问题。