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

Mus*_*kat 15 meta content-security-policy mixed-content

我正在强制https访问我的网站,但必须加载一些内容http(例如视频内容不能通过https),但浏览器会因mixed-contents策略阻止请求.

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

<meta http-equiv="Content-Security-Policy" content="????">
Run Code Online (Sandbox Code Playgroud)

Bar*_*ard 14

你不能.

CSP限制您网站上的内容,而不是放宽浏览器限制.

安全的https网站给予用户一定的保证,然后允许在其上加载http内容(因此混合内容警告)并不公平,如果您可以在未经用户同意的情况下隐藏这些警告,那真的不公平.

您可以使用CSP来帮助迁移到https,例如:

  1. 您可以使用它自动将http请求升级到https(虽然浏览器支持不是通用的).这有助于您错过将http链接更改为https等效项.但是,这假设资源可以通过https加载,听起来好像你无法通过https加载它们,所以这不是一个选项.

  2. 您还可以使用CSP通过将消息报告给您可以监视的服务来帮助您识别您错过的站点上的任何http资源,并说明尝试加载http资源.这允许您识别和修复https的http链接,因此您不必依赖上述自动升级.

但这也不是你真正想要的.


nod*_*dws 8

你不应该......但你可以,这个功能在这里展示一个即时转换为HTTPS的HTTP PNG图像.

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)

此处还介绍了一个新的权限API,它允许Web服务器检查用户对地理位置,推送,通知和Web MIDI等功能的权限.

  • 我不认为这对你的情况有帮助,这个解决方案假设你已经有一个带有“https”的有效安全URL,那么这个标签将帮助浏览器自动调用这些ulrs将“https”而不是“http”而无需您需要在页面代码中手动更改它,而如果您没有该安全 URL,我相信您可以使用此方法。 (3认同)
  • 巨大的-1,因为upgrade-insecure-requests与允许混合内容无关,它只是将请求方案更改为https,这就是所附示例中发生的情况,而不是“即时转换为HTTPS” (2认同)