Django休息框架和交叉原始请求

时间:2017-01-07 14:45:04

标签: django rest cors django-rest-framework django-cors-headers

我尝试从javascript客户端做一些请求来使用Django rest框架来构建api。 对/ api / test的所有GET请求都是公开的,因此不需要会话或令牌或watever。 所有POST到api / test都是私有的,用户必须使用oauth2

根据the documentation,我必须使用django-core-headers管理跨源请求。将此模块安装到我的django后,我已经设置好了 CORS_ORIGIN_ALLOW_ALLTrue但是: 1)这是一个好习惯吗? 2)是否有一个很好的解决方案,只允许在某些点上交叉原点请求?

由于

1 个答案:

答案 0 :(得分:0)

使用django-core-headers,您可以使用CORS_ORIGIN_WHITELISTCORS_ORIGIN_REGEX_WHITELIST限制CORS来源。如果你不需要允许任意来源,那么设置那些;否则,你很好。

如果你愿意的话,你可以编写一个装饰器来检查你的视图中的原点,看看它是否与所需的原点相匹配(也许在任何模型上设置的东西跟踪哪些用户被授权进行POST请求?)。但是,如果您允许来自任意来源的GET请求,并且不关心POST请求来自哪里,只要他们获得授权,那么您就明白了 - 毕竟,怎么能如果您不知道客户可以向哪些人提出请求,您是否限制来源?