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

时间:2019-04-03 14:39:45

标签: django csrf clickjacking

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

@xframe_options_exempt为什么不起作用?

1 个答案:

答案 0 :(得分:0)

如果在处理POST请求期间发生异常,则@xframe_options_exempt装饰器将没有机会这样做。因此,如果发生这种情况,请寻找例外。

在我的情况下,我的应用程序代码中有一个错误,必须修复 plus ,我遇到了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