Day 96/100 'X-Frame-Options' to 'sameorigin'后如何嵌入iframe

写在前面的话

今儿第一天入职;

被同事问了问题,之前没遇到过,这里记录下~

(一)问题

之前想嵌入其他网页的内容,直接用iframe;

But,现在的问题是,原服务设置X-Frame-Options,限制了iframe的嵌入;


(二)相关知识

1、X-Frame-Options

X-Frame-Options: deny

X-Frame-Options: sameorigin

X-Frame-Options: allow-from https://example.com/

deny:

表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。

sameorigin

表示该页面可以在相同域名页面的 frame 中展示。

allow-from uri

表示该页面可以在指定来源的 frame 中展示。


2、服务器如何配置

Apache

Header always set X-Frame-Options "sameorigin"

NGINX

add_header X-Frame-Options sameorigin always;

Express

consthelmet=require('helmet'); constapp=express(); app.use(helmet.frameguard({action:"sameorigin"}));


3、阮一峰说

这样会侵犯版权,建议使用的时候加上原网站的链接;

嵌入的真是网址对一般用户是不可见的,欺骗了用户并且侵犯原作者所提供的内容

使用这类框架技术展示别人网站页面视觉效果上完全一样,有着极其高的欺骗性

恶意嵌入者可能在嵌入页面上方附加广告(更严重的是进行木马或者病毒传播),这种行为严重的破坏原作者的形象与意图。

访问者通过框架展示的内容点击链接跳转另外一个链接,其外部的网址是不变的,这种体验效果非常差并且访问者会认为是原作者提供。


(三)怎么办?

在百度和Google搜了好久没找到方案;

在GitHub上找到了X-Frame-Bypass,试了下好使~~~

页面中引入下面两个链接

<script src="https://unpkg.com/@ungap/custom-elements-builtin"></script>

<script type="module" src="https://unpkg.com/x-frame-bypass"></script>

iframe这样写

<iframe src="https://www150.statcan.gc.ca/n1/pub/45-28-0001/2020001/article/00086-eng.htm"></iframe>

页面出来了。


最后,建议在使用的时候,加上原网站的链接,谨慎使用,尊重版权。


以上~



参考链接:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options

https://github.com/niutech/x-frame-bypass

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容