iframe页面嵌套提示X-Frame-Options问题
2023-02-18 16:29:46 时间
最近需要在大屏网页中嵌套跳转一些网站地址,使用 iframe 页面嵌套时会提示X-Frame-Options问题,具体报错如下:
Refused to display 'xxxxxxxxx' in a frame because it set multiple 'X-Frame-Options' headers with conflicting values ('DENY'). Falling back to 'deny'.
X-Frame-Options 介绍
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在<frame>、<iframe>、<embed> 或者 <object> 中展现的标记。
站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免点击劫持攻击。
X-Frame-Options 可以有几个参数:
- DENY 表示该页面不允许在 frame 中展示(拒绝任何 iframe 的嵌套请求),即便是在相同域名的页面中嵌套也不允许。
- SAMEORIGIN 表示该页面可以在相同域名页面的 iframe 中展示,例如网页为 abc.com/123.html,則 abc.com 底下的所有网页可以嵌入此网页,但是 abc.com 以外的网页不能嵌入。 设置后如果在不同域名页面通过 iframe 加载会报下面错误:Refused to display 'xxxxxxxxx' in a frame because it set multiple 'X-Frame-Options' headers with conflicting values ('DENY, SANEORIGIN'). Falling back to 'deny'.
- ALLOW-FROM uri 表示该页面可以在指定的 uri 页面中被 iiframe 加载。
- ALLOWALL 表示该页面允许全部来源域名的frame展示。 nginx配置示例:add_header X-Frame-Options ALLOWALL;
Nginx 配置
配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:
- 表示该页面可以在相同域名页面的 frame 中展示 add_header X-Frame-Options SAMEORIGIN;
- 表示该页面可以在指定来源的 frame 中展示 add_header X-Frame-Options "ALLOW-FROM domain.com";
- 表示该页面允许全部来源域名的 frame 展示 add_header X-Frame-Options ALLOWALL;
问题处理
Nginx 配置了 add_header X-Frame-Options SAMEORIGIN;
之后
发现报错变了,如下:
Refused to display 'xxxxxxxxx' in a frame because it set multiple 'X-Frame-Options' headers with conflicting values ('DENY, SANEORIGIN'). Falling back to 'deny'.
网上查了很多博客资料,还是没找到原因,
发现有些评论说可以先屏蔽再设置...
location /xxxxxx/ {
proxy_hide_header X-Frame-Options; //忽略返回头的X-Frame-Options
add_header X-Frame-Options SAMEORIGIN always; //设置X-Frame-Options
proxy_pass http://xxxxxxxx/xxxxxx/;
}
试了之后发现可以正常打开页面了,就是不知道有没有安全隐患,希望没事吧。这个问题后面持续跟进,先这样吧...
相关文章
- 【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(上)
- 国人发文占比超五成,不收版面费的近4分SCI期刊!
- 虚拟化和云计算有什么区别?什么是容器?企业云上常见架构介绍
- 基于5G边缘网关的智慧公交站台应用
- 6种常见的地标识别算法整理和总结
- 技术实践丨列存表并发更新时的锁等待问题原理
- 这才是大数据的正确打开方式
- 边缘计算是流行词还是风口?开发者怎样选开源项目?
- 数据脱敏:数仓安全隐私保护见真招儿
- 因为这几个TypeScript代码的坏习惯,同事被罚了500块
- 线程、多线程和线程池,看完这些你就能全部搞懂了
- 章方:征服耶鲁教授的算法大神程序媛
- 【有奖征文】WEB前端大作战,走在技术最前端!
- 面试官:Java中线程是按什么顺序执行的?
- 你眼中的程序员 VS 程序员眼中的自己,是时候打破代沟了
- GaussDB(for openGauss)让数据“存得下、算得快、算得准”
- HDC.Cloud2021|开发者们都在谈的云原生到底长什么样?
- 基于深度神经网络的噪声标签学习
- 解读金融高频交易不出错的金手指:分布式事务管理
- 聊聊LiteOS事件模块的结构体、初始化及常用操作