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