我已经搜索了该主题,但在nginx配置中找不到任何表示“确定”的内容?

除了弄乱vim中突出显示的语法外,这似乎工作得很好:

add_header Content-Security-Policy "default-src 'self' *.google-analytics.com;
                                     object-src 'none';
                                     report-uri /csp-report;";

但这真的有效吗?我是依靠浏览器来了解CSP中的换行符吗,还是nginx在提供它之前将其分成一行? Fiddler似乎将其​​显示为一行,但是我也不知道nginx是否以此为服务,或者Fiddler是否以此为解释.

(这显然是我真正的CSP的简化版本,它肯定足够长,以至于我认为将其分成多行有益于我的理智!)


解决方法:

不幸的是,nginx会按字面意义处理引号之间的空白,因此,只要您以空格或制表符开头的每一行,标题都将保持有效.

但是,可以创建无效的头.例如,这产生一个无效的头:

add_header Content-Security-Policy "default-src 'self' *.google-analytics.com;
object-src 'none';
report-uri /csp-report;";

拆分标题行的支持在RFC 7230中已弃用:

RFC 7230 section 3.2.4

Historically, HTTP header field values could be extended over
multiple lines by preceding each extra line with at least one space
or horizontal tab (obs-fold). This specification deprecates such
line folding except within the message/http media type

最安全的解决方案是接受配置文件中的某些行可能比您希望的长得多.

标签: nginx

相关文章推荐

添加新评论,含*的栏目为必填