X-Frame-Options的限制

3,592 阅读1分钟

什么是X-Frame-Options

X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面是否可以在 <frame>, <iframe>, <embed> 或者<object> 中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 Clickjacking 攻击。通过Nginx 的作为正向代理,我们可以绕过 X-Frame-Options 限制成功的将第三方网页嵌入到自己的页面中。

X-Frame-Options 默认配置值

  • deny:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
  • sameorigin: 表示该页面可以在相同域名页面的 frame 中展示。
  • allow-from uri: 表示该页面可以在指定来源的 frame 中展示。

工作中遇到的错误现象

线上有个需求,有一个应用页面需要嵌套另一个网站的页面,此时报错内容如下:

解决办法

由于无法更改对方url返回X-Frame-Options值的设置,可以通过nginx正向代理使得在返回内容中隐藏掉X-Frame-Options的返回。

nginx的配置

server {
        listen       80;
        location / {
            proxy_hide_header X-Frame-Options;  //隐藏掉返回头部
            proxy_pass http://xxxxx;
        }
    }

结果

此时通过配置内网dns解析或者host的方式,使得应用访问此代理域名,可以实现页面的嵌入。