首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在B站使用nginx proxy_pass提供内容服务时,如何覆盖A站的内容安全策略?

在B站使用nginx proxy_pass提供内容服务时,如何覆盖A站的内容安全策略?
EN

Stack Overflow用户
提问于 2015-10-23 18:23:28
回答 1查看 9.5K关注 0票数 4

当我在站点B上使用nginx proxy_pass时,有没有办法覆盖由域/站点A设置的内容安全策略?

代码语言:javascript
复制
Site A defined Content-Security-Policy on their domain.
Site B acts as a reverse proxy for site A.

如何在从站点B提供内容时覆盖Content-Security-Policy?

如何在nginx proxy pass中实现此功能?

我当前的nginx服务器块如下所示

代码语言:javascript
复制
server {
server_name  proxy-domain.com.;

    location / {
      proxy_pass http://www.target-site.com/;
      proxy_set_header  Accept-Encoding ""; 
      proxy_set_header  X-Real-IP   $remote_addr;   
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
   }
}

我已经尝试添加

add_header内容安全策略“默认资源‘自我’‘不安全内联’‘不安全求值’

例如:

代码语言:javascript
复制
server {
server_name  proxy-domain.com.;

    location / {
      proxy_pass http://www.target-site.com/;
      proxy_set_header  Accept-Encoding ""; 
      proxy_set_header  X-Real-IP   $remote_addr;   
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
   }
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval'
}

但是如果我检查站点B的标题,那么它显示站点B的修改的内容-安全-策略,但是来自其他来源的内容没有被加载,只有标题被设置。

为什么会这样呢?

更新:当我检查标头时,我得到两个Content-Security-Policy标头,首先由站点A设置,然后一个Content-Security-Policy标头设置为我的即站点B。

例如:

代码语言:javascript
复制
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval' apis.google.com www.google.com;
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval' *.cloudflare.com;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-01 23:32:12

这个问题似乎与Nginx邮件列表上的Nginx as reverse Proxy, remove X-Frame-Options header线程类似。那个解决方案就是proxy_hide_header

默认情况下,nginx不会传递标题字段“Date”、“Server”、“X-Pad”和“X-Accel-...”来自代理服务器对客户端的响应。proxy_hide_header指令设置不会被传递的附加字段。相反,如果需要允许传递字段,则可以使用proxy_pass_header指令。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33300111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档