HTTPS 页面内的 HTTPS iframe 不起作用

HTTPS iframe inside a HTTPS page not working

我们如何正确使用嵌入在 iframe 中的 github 页面?

我在 firebase 中托管了一个网站,它通过 https 使用自定义域,例如 https://www.example.com.

这个网站使用了 React 和其他东西,但是对于一条路线(登陆页面一)我想使用托管在 github 上的静态页面,例如 https://example.github.io/page. So, to achieve this I've created an iframe inside the route https://www.example.com/page.

问题是我一直收到以下错误:

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

奇怪的是 iframe 看起来正确:

<iframe title="Page" src="https://example.github.io/page">unwanted text</iframe>

它已经在使用 https,但似乎被忽略了。 我已经尝试使用此元 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">,使用 </iframe> 关闭 iframe 并在 iframe 中添加 不需要的文本

我们能解决这个问题吗?

如果您仔细检查您的 HTML 代码和错误消息,您会注意到 URL 中除了协议部分之外的细微差别:

  • https://example.github.io/page - 在 iframe src 标签中
  • http://example.github.io/page/ - 在错误信息中

原因可能是 URL https://example.github.io/page returns a redirect to the "canonical" version with the trailing slash (/page/), but a redirect URL must be a full URL, and the server for some reason isn't including the actual protocol in the redirect URL, always using http:// instead. That could be due to configuration or coding at the server side (see also github issue #289).

作为解决方法,使用不会触发规范化重定向的 URL,即 https://example.github.io/page/.