因正式版长期未更新,因此手动更新至开发版(v1.2),更新后发现编辑文章时多了一个预览功能,可以在正式页面中仿制渲染效果。
起因
点击预览时发现页面无法加载,打开控制台可见其报错为
Refused to display '' in a frame because it set 'X-Frame-Options' to 'deny'
和开发者联系后发现其预览功能使用 iframe
功能实现,
深入
检查后发现是 NGINX 限制其 iframe
功能,配置为
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
此段配置来源于 Cipherli.st 用于防范攻击行为。
解决
参考 Mozilla 官方文档(具体参见参考链接)可知
X-Frame-Options
HTTP 响应头是用来给浏览器指示允许一个页面可否在<frame>
,<iframe>
,<embed>
或者<object>
中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免clickjacking
(点击劫持) 攻击。
其中 X-Frame-Options
有三个可用值
- DENY 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
- SAMEORIGIN 表示该页面可以在相同域名页面的 frame 中展示。
- ALLOW-FROM uri 表示该页面可以在指定来源的 frame 中展示。
因此将配置文件改为以下即可
add_header X-Frame-Options sameorigin always;
其他的 Web 服务的配置方法详见参考链接,安全的 NGINX 配置文件可使用 SSL Configuration Generator 生成。
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2019-12-18 11:48 AM
怪不得呢,我前几天改完全站 HTTPS 后功能就不能用了,还没来得及处理。
我也是才解决完就看到了这个文章。。。一言难尽
这个有用,马克一下。