如何解决Apache - Permissions-Policy 标头错误:由于结构化标头解析器报告的错误,权限策略的解析失败
我最近尝试更新我托管的一个非营利网站的服务器上的设置,但遇到了与权限策略相关的配置问题。我没有找到很多用于此设置的正确用例和语法的示例,因此在 cimarronoutdoors.org 的 Chrome 控制台中遇到了错误。这是我正在尝试的权限政策。
Header always set Permissions-Policy "geolocation=();midi=();microphone=();camera=();fullscreen=(self);payment=()"
在控制台中它返回以下内容。
权限策略标头错误:由于结构化标头解析器报告的错误,权限策略解析失败。
我已尝试仅列出以下链接中的项目并将其限制为几个,以查看是否可能是问题所在,但我无法消除错误。
https://github.com/w3c/webappsec-permissions-policy/blob/main/features.md
对此问题的任何建议将不胜感激。
- 服务器操作系统:Ubuntu 16.04.7 LTS
- 在站点 conf 文件中设置的权限策略。
解决方法
使用逗号代替分号作为分隔符。
参见此处的示例:
https://www.w3.org/TR/permissions-policy-1/#policy-directive
,创建权限策略的方式已经改变。
您必须在列表周围添加括号,使用逗号而不是分号,并在大多数字符串周围添加双引号:
fullscreen=(self 'https://example.com'),geolocation=*,camera=()
这是一个链接:Appendix: Big changes since this was called Feature Policy
,我发现方案从 microphone 'none'; geolocation *; payment https://*.paypal.com;
更改为 microphone=(),payment=("https://*.paypal.com")
。
目前以下代码有效,因此不会产生“我们没有检测到可行的策略”。在 securityheaders.com 上,“权限策略标头错误:由于结构化标头解析器报告的错误,权限策略解析失败”。在 Google Chrome 控制台中。
请记住在配置中正确转义双引号,使用逗号而不是分号(如上所述)并使用“新格式”。
nginx.conf 示例:
add_header Permissions-Policy "accelerometer=(),autoplay=(),camera=(),encrypted-media=(),fullscreen=*,gyroscope=(),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=(),xr-spatial-tracking=()"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。