为什么Django从用xframe_options_exempt修饰的视图中返回X-Frame-Options SAMEORIGIN?

问题描述 投票:0回答:1

我有一个用@xframe_options_exempt装饰的Django视图,我在iframe中托管它。视图上的GET请求工作正常,但POST导致浏览器错误,因为响应返回时X-Frame-Options设置为SAMEORIGIN

为什么@xframe_options_exempt没有工作?

django csrf clickjacking
1个回答
0
投票

如果在处理POST请求期间发生异常,那么@xframe_options_exempt装饰器将没有机会做到这一点。因此,如果发生这种情况,请查找异常。

在我的情况下,我的应用程序代码中有一个我必须修复的错误,而且我得到了CSRF异常,因为我的iframe是由另一个域托管的。我必须添加以下设置才能使其正常工作,我从一些不同的StackOverflow帖子中收集了这些信息:

# CSRF
CSRF_TRUSTED_ORIGINS = [
    '.mysite1.com',
    '.mysite2.com',
    ...
]
CSRF_COOKIE_SAMESITE = None

CSRF_TRUSTED_ORIGINS允许您继续使用CSRF保护,只要您的iframe由受信任的站点托管。域前面的点表示允许子域。

CSRF_COOKIE_SAMESITE = None允许跨站点发送CSRF cookie。

有关更多信息,请参阅Django Settings documentation

© www.soinside.com 2019 - 2024. All rights reserved.