我有一个用@xframe_options_exempt
装饰的Django视图,我在iframe
中托管它。视图上的GET
请求工作正常,但POST
导致浏览器错误,因为响应返回时X-Frame-Options
设置为SAMEORIGIN
。
为什么@xframe_options_exempt
没有工作?
如果在处理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。