我尝试从javascript客户端做一些请求来使用Django rest框架来构建api。 对/ api / test的所有GET请求都是公开的,因此不需要会话或令牌或watever。 所有POST到api / test都是私有的,用户必须使用oauth2
根据the documentation,我必须使用django-core-headers管理跨源请求。将此模块安装到我的django后,我已经设置好了
CORS_ORIGIN_ALLOW_ALL
到True
但是:
1)这是一个好习惯吗?
2)是否有一个很好的解决方案,只允许在某些点上交叉原点请求?
由于
答案 0 :(得分:0)
使用django-core-headers,您可以使用CORS_ORIGIN_WHITELIST
和CORS_ORIGIN_REGEX_WHITELIST
限制CORS来源。如果你不需要允许任意来源,那么设置那些;否则,你很好。
如果你愿意的话,你可以编写一个装饰器来检查你的视图中的原点,看看它是否与所需的原点相匹配(也许在任何模型上设置的东西跟踪哪些用户被授权进行POST请求?)。但是,如果您允许来自任意来源的GET请求,并且不关心POST请求来自哪里,只要他们获得授权,那么您就明白了 - 毕竟,怎么能如果您不知道客户可以向哪些人提出请求,您是否限制来源?