网站嵌入Tumblr内容报错X-Frame-Options:deny,寻求修复方案
我之前也碰到过一模一样的情况,Tumblr近期确实调整了跨域框架嵌入的安全策略,把X-Frame-Options直接设为了deny——这就导致所有外部网站都没法通过iframe嵌入任何Tumblr内容,哪怕是官方的$blogId.tumblr.com/post/$postId/embed端点也受影响,这和你的SSL配置完全无关,你之前的SSL设置是没问题的。
给你几个可行的修复方案:
使用Tumblr官方JavaScript嵌入代码:
这是最直接省心的解决办法。打开你要嵌入的Tumblr帖子,点击右上角的「分享」按钮,选择「嵌入」选项,Tumblr会生成一段带<script>标签的代码(不是单纯的iframe)。把这段代码复制到你的网站页面里,它会动态创建符合Tumblr安全策略的嵌入内容,自动绕过X-Frame限制。通过Tumblr API获取内容并自行渲染:
如果需要更个性化的展示效果,可以调用Tumblr的API获取帖子的原始数据(比如文字、图片、视频链接等),然后用自己的HTML和CSS在页面上渲染内容。需要先在Tumblr开发者平台申请API密钥,再通过GET /v2/blog/{blog-identifier}/posts接口获取对应帖子的详情,这种方式完全不依赖iframe,从根源上避开了框架限制问题。谨慎使用第三方代理工具:
虽然有些第三方工具声称能绕过X-Frame限制,但这类工具存在安全风险(可能泄露用户数据或被注入恶意代码),而且Tumblr随时可能更新策略让这类工具失效,不推荐使用。
要注意的是,这个限制是Tumblr全局的安全调整,所有主流浏览器(包括你提到的Chrome、Opera、Vivaldi)都会严格遵循这个HTTP头的规则,所以之前的iframe嵌入方式已经彻底无法使用,必须切换到上述官方支持的方法。
内容的提问来源于stack exchange,提问作者Hakan

