【问题标题】:How can I allow Mixed contents (http with https) using content-security-policy meta tag?如何使用 content-security-policy 元标记允许混合内容(http 和 https)?
【发布时间】:2016-08-30 20:02:55
【问题描述】:

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

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

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

【问题讨论】:

  • 我也有同样的问题。我认为提供一种启用混合内容服务器端的方法不是问题。然后,开发人员可以对加载的数据进行校验和,以确定内容是否未被篡改。就像例如 Debian 软件包通过 HTTP 下载然后校验,我不明白为什么我的 CDN 必须是 HTTPS。程序员(有时)知道他在做什么。

标签: meta content-security-policy mixed-content


【解决方案1】:

你不能。

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

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

您可以将 CSP 用于帮助迁移到 https 的一些事情,例如:

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

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

但两者都不是您真正想要的。

【讨论】:

  • 可以通过原始响应头来放松安全性吗?我正在研究元标记,因为它听起来更容易添加。
  • 没有。它仅用于收紧安全策略 - 而不是放松它。正如我的回答中提到的那样。
【解决方案2】:

您不应该...但是您可以,该功能已被演示 here 一个 HTTP PNG 图像即时转换为 HTTPS。

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

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

【讨论】:

  • 我已经在母版页的标题部分添加了这个,但它没有帮助,我应该做任何 IIS 配置吗?因为我听说 chrome 不允许我们从 HTTP 文件转换为 HTTPS
  • 我认为这对你的情况没有帮助,这个解决方案假设你已经有一个带有“https”的有效安全 URL,那么这个标签将帮助浏览器自动调用这些 ulrs will https' 而不是 'http' 无需您在页面代码中手动更改它,而如果您没有该安全 URL,我相信您可以使用此方法。
  • Huge -1,因为 upgrade-insecure-requests 与允许混合内容无关,它只是将请求方案更改为 https,这就是所附示例中发生的情况,而不是“转换- 飞到 HTTPS"
  • 不相关,OP想知道如何使用元标记
  • 不,他问的问题是“我怎样才能允许混合内容”。该元标记不允许这样做。
猜你喜欢
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2015-02-26
  • 2018-03-06
相关资源
最近更新 更多