如何使用 content-security-policy 元标记允许混合内容(http 和 https)?

How can I allow Mixed contents (http with https) using content-security-policy meta tag?

我强制https访问我的网站,但有些内容必须通过http加载(例如视频内容不能通过https),但浏览器阻止了由于 mixed-contents 政策要求。

经过几个小时的搜索,我发现我可以使用 Content-Security-Policy,但我不知道如何允许混合内容。

<meta http-equiv="Content-Security-Policy" content="????">

你不能。

CSP 用于限制您网站上的内容,而不是放松浏览器限制。

安全的 https 站点为用户提供了某些保证,然后允许在其上加载 http 内容(因此出现混合内容警告)是不公平的,如果您可以在未经用户同意的情况下隐藏这些警告,则确实不公平。

您可以使用 CSP 做一些事情来帮助迁移到 https,例如:

  1. 您可以使用它自动将 http 请求升级为 https(尽管浏览器支持并不通用)。如果您错过了将 http link 更改为等效的 https,这会有所帮助。然而,这假设资源可以通过 https 加载,听起来你不能通过 https 加载它们,所以这不是一个选项。

  2. 您还可以使用 CSP 来帮助您识别站点上您错过的任何 http 资源,方法是向您可以监控的服务报告一条消息,告知您试图加载 http 资源。这允许您识别并将 http links 修复为 https,因此您不必依赖上述自动升级。

但这也不是您真正想要的。

你不应该...但你可以,演示了该功能here 将 HTTP PNG 图像即时转换为 HTTPS。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

还有一个新权限 API、described here,它允许 Web 服务器检查用户对地理定位、推送、通知和 Web MIDI 等功能的权限。