如何在 nginx 中正确设置 X-Frame-Options Allow-From

Posted

技术标签:

【中文标题】如何在 nginx 中正确设置 X-Frame-Options Allow-From【英文标题】:How to set X-Frame-Options Allow-From in nginx correctly 【发布时间】:2015-08-24 05:26:27 【问题描述】:

我试图在 nginx 中设置 ALLOWED-FROM 但到目前为止我尝试的所有设置都导致以下 Chrome 错误: Invalid 'X-Frame-Options' header encountered when loading 'https://domain.com/#/register': 'ALLOW-FROM domain.com' is not a recognized directive. The header will be ignored.

我尝试的这些选项是:(也尝试使用带有 https:// 前缀的 FQDN)

  add_header X-Frame-Options "Allow-From domain.com"; 
  add_header X-Frame-Options "ALLOW-FROM domain.com"; 
  add_header X-Frame-Options "ALLOW-FROM: domain.com";
  add_header X-Frame-Options "Allow-From: domain.com";
  add_header X-Frame-Options ALLOW-FROM "domain.com";
  add_header X-Frame-Options ALLOW-FROM domain.com;

【问题讨论】:

Chrome 不支持allow-from。 developer.mozilla.org/en-US/docs/Web/HTTP/… 【参考方案1】:

在 Chrome 和 Safari 中,您需要使用 Content-Security-Policy

Content-Security-Policy: frame-ancestors domain.com

您可以在此网站上查看更多详细信息:

https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives

【讨论】:

那不是一个有效的 nginx 指令。实际的指令是add_header Content-Security-Policy "frame-ancestors domain.com";【参考方案2】:

一些较旧的浏览器不支持内容安全策略,因此正确的语法是

add_header X-Frame-Options "ALLOW-FROM domain.com";

并且新版浏览器支持内容安全策略

add_header Content-Security-Policy "frame-ancestors domain.com";

您应该同时使用这两个标头,以确保所有浏览器都支持

要了解更多浏览器对 X-Frame-Options 和内容安全策略的支持(CSP 浏览器支持数据已过时,写于 2017 年 12 月 19 日。目前所有主要浏览器都支持 CSP): https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet

【讨论】:

以上是关于如何在 nginx 中正确设置 X-Frame-Options Allow-From的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx 中配置 cakephp

如何设置 nginx 以正确地为 React 和 Django 提供服务

如何抑制 X-Frame-Options SAMEORIGIN 响应标头?

如何通过 nginx.conf 文件在 Nginx 中将 Secure 属性设置为 Set-cookie

如何正确配置Nginx + PHP

Nginx“auto .dev”设置无法正确加载 WordPress