在nginx中使用X-Frame-Options允许所有域名的方法

32

我正在使用nginx作为网站的反向代理。

我想从Chrome扩展程序新标签页HTML文件中的打开我的网站。

为此,我需要让nginx设置X-Frame-Options以允许所有域名。

根据这个答案,如果您不设置X-Frame-Options,则所有域是默认状态。

我的/etc/nginx/nginx.conf没有任何地方设置X-Frame-Options。

但是当我使用Postman检查我的网站响应头时,它显示了X-Frame-Options = SAMEORIGIN

我该如何删除此设置并在chrome新标签页.html文件中加载我的网站?

6个回答

48

通过更改/etc/nginx/sites-available/default文件中的proxy_hide_header值来解决它,代码如下:

proxy_hide_header X-Frame-Options;

我需要重新启动nginx以及使用pm2来重启我的nodejs服务器(由于某些原因,在对服务器进行了小改动并重启后,它才正常工作)。


1
希望这个文档能够更好地记录。 - Mallika Khullar
我尝试过在特定应用程序的配置文件中进行更改,但并未使用默认设置,但是它并没有起作用。我在服务器前面使用了Cloudflare,这会以任何方式覆盖标头吗? - Ashit Vora

19
在nginx 1.12中,add_header X-Frame-Options "";对我起到了作用。

10

我在/etc/nginx/snippets/ssl-params.conf文件中找到了这个标题。

只需要将该行注释掉即可:

# add_header X-Frame-Options DENY;

1
我已经配置了带有SSL的nginx 1.18,这对我很有用。我对所有其他答案感到烦恼。 - Vincent La

3
我在文件 /etc/nginx/templates/default.conf 中找到了这个头部选项。
add_header  X-Frame-Options "SAMEORIGIN" always; 

在我的主要nginx.conf文件中提到了default.conf文件。


1
目前你的回答不够清晰,请编辑并添加更多细节以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community
我已经在 /etc/nginx/sites-available/app 文件中添加了内容(Ubuntu 18.04)。它可以正常工作。谢谢伙计。 - Ramesh Ponnusamy

1
如果您的服务器上有不同的网站,可以在这里添加到nginx服务器块中,以在域级别进行控制,无需进行主要的nginx配置更改。
    location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_buffering on;# important - set as off for WSL dev environment
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/run/php/php8.1-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_read_timeout 60;
            include fastcgi_params;

允许使用内嵌框架
            add_header X-Frame-Options "" always;

    }

0

也许你可以尝试在你的nginx配置中添加以下内容

add_header X-Frame-Options "" always;

这对我很有效


您的回答可以通过提供更多支持信息来改进。请[编辑]以添加进一步详细信息,例如引用或文档,以便其他人可以确认您的答案是否正确。您可以在帮助中心中找到有关编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接