0

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

为什么不@xframe_options_exempt工作?

4

1 回答 1

0

如果在处理请求的过程中发生了异常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 设置文档

于 2019-04-03T14:39:45.007 回答