Apache - Permissions-Policy 标头错误:由于结构标头解析器报告的错误,权限策略解析失败

我最近尝试更新我托管的非营利网站的服务器上的设置,并遇到了与权限策略有关的配置问题。我没有找到很多用于此设置的正确用例和语法示例,因此在 cimarronoutdoors.org 的 Chrome 控制台中遇到了错误。这是我正在尝试的权限策略。

Header always set Permissions-Policy "geolocation=();midi=();microphone=();camera=();fullscreen=(self);payment=()"

在控制台中,它返回以下内容。

Permissions-Policy 标头出错:由于结构标头解析器报告的错误,权限策略解析失败。

我尝试仅列出下面链接中的项目并将其限制为几个,看看这是否可能是问题,但我无法让错误消失。

https://github.com/w3c/webappsec-permissions-policy/blob/main/features.md

对此问题的任何建议将不胜感激。

  • 服务器操作系统:Ubuntu 16.04.7 LTS
  • 站点配置文件中设置的权限策略。
stack overflow Apache - Error with Permissions-Policy header: Parse of permission policy failed because of errors reported by strctured header parser
原文答案

答案:

作者头像

我发现该方案从 microphone 'none'; geolocation *; payment https://*.paypal.com; 变为 microphone=(),geolocation=*,payment=("https://*.paypal.com")

目前,以下代码是有效的,因此它不会产生和“我们没有检测到可行的政策”。在 securityheaders.com 上,“由于结构化标头解析器报告的错误,因此“带有Permissions-Policy-Policy标头的错误”错误策略失败了。”在Google Chrome控制台中。

请记住,以正确地逃脱配置中的双引号,使用逗号而不是半彩色(如下所述),然后使用“新格式”。

nginx.conf示例:

add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,geolocation=*,gyroscope=(),interest-cohort=(),magnetometer=(),microphone=(),midi=(),payment=("https://*.paypal.com" "https://*.barion.com"),sync-xhr=*,usb=(),xr-spatial-tracking=()" always;

apache.conf示例:

Header always set Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,geolocation=*,gyroscope=(),interest-cohort=(),magnetometer=(),microphone=(),midi=(),payment=("https://*.paypal.com" "https://*.barion.com"),sync-xhr=*,usb=(),xr-spatial-tracking=()"
作者头像

使用逗号而不是分号作为分隔符。

请参见此处的示例:

https://www.w3.org/TR/permissions-policy-1/#policy-directive

作者头像

创建 Permission-Policy 的方式已经改变。

您必须在列表周围添加括号,使用逗号而不是分号,并在大多数字符串周围添加双引号:

fullscreen=(self 'https://example.com'), geolocation=*, camera=()

这是一个链接: Appendix: Big changes since this was called Feature Policy

相关问题