我有一个用 装饰的 Django 视图@xframe_options_exempt
,我将它托管在一个iframe
. 视图上的GET
请求工作正常,但会POST
导致浏览器错误,因为返回的响应X-Frame-Options
设置为SAMEORIGIN
.
为什么不@xframe_options_exempt
工作?
我有一个用 装饰的 Django 视图@xframe_options_exempt
,我将它托管在一个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
只要您iframe
由受信任的站点托管,您就可以继续使用 CSRF 保护。域前面的点表示允许子域。
CSRF_COOKIE_SAMESITE = None
允许跨站点发送 CSRF cookie。
有关更多信息,请参阅Django 设置文档。