Django 回应 X-Frame-Options

我想要在首页用iframe崁入注册页面,像Twitch注册网页,点击后直接在首页跳出,代码如下:

<div id="registerblock" onclick="cancle(this);">    <div id="regiBG">        <iframe id="showregister" frameborder='0' src="{% url 'register' %}"></iframe>    </div></div>

在chrome运行后,报错如下:
http://img2.58codes.com/2024/201246185sbchPK50P.png

爬文之后发现主要原因为各大网站包含chrome为了防止网路钓鱼等骇客动作,都在HTTP Header加了X-Frame-Options请求,以符合同源限制。

黑哥说的满详细的,可以看看他的文章:
https://blog.darkthread.net/blog/iframe-clickjacking/

但我就是想用啊!!!!@@“

而且我就自己的网页崁入没道理不能用呀,而且为什么Twitch可以我就不可以!!!而且而且而且而且而且而且而且而且而且而且而且而且而且.........

一堆而且之后我又继续爬文,发现Django官方文章有说明X-Frame-Options的因应方式:
https://docs.djangoproject.com/en/3.0/ref/clickjacking/#setting-x-frame-options-for-all-responses

我用的第一个方式是直接把settings.py里MIDDLEWARE中的"XFrameOptionsMiddleware"给注释掉,

结果就可以了
...
'django.middleware.clickjacking.XFrameOptionsMiddleware',
...

但我觉得怪怪的,这似乎不是一个很好的解决方式,我还是希望我的网站有防护钓鱼的机制。

所以Django提供了另一个方式,在用iframe转入的网页视图前加入xframe_options装饰器,由Django内置的装饰器协助回应X-Frame-options的请求,代码如下:

@xframe_options_sameorigindef register_views(request):    return render(request,'02-register.html')

就这样解决了,瞬间觉得人生美好!!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章