4

我正在尝试将 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,因为它是“不安全的内容”,我必须手动取消阻止它才能正常工作。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://example.com/shellinabox直接访问时,锁定图标是绿色的,没有任何内容被阻止,并且该页面上没有任何 SSL 问题的迹象。

我还在 Firefox、IE 和 MS edge 中对此进行了测试,它们都有相同的行为(因此这不是 Chrome 特有的问题)。是什么赋予了?

4

2 回答 2

5

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

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

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

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

于 2018-01-02T21:57:17.687 回答
2

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

于 2016-01-27T16:17:40.263 回答