Django-CSRF-token-missing-or-incorrect
暑假电商项目一直有一个问题没有处理,用Nginx反代后端后,前端发送POST请求,有一个
CSRF token missing or incorrect.错误,注销掉中间件CsrfViewMiddleware也没有用,最后发现是DRF的SessionAuthentication认证模块会校验CSRF。
问题复现
当时的Nignx配置大概是这样的
|
|
解决思路
后面看到了CSRF Failed: CSRF token missing or incorrect_爱吃鱼虾的博客-CSDN博客
文章里提到:
django,会对合法的跨域访问做这样的检验,cookies里面存储的’csrftoken’,和post的header里面的字段’X-CSRFToken’作比较,只有两者匹配,才能通过跨域检验。
于是我去看源代码验证了一下

|
|
CSRF_HEADER_NAME和CSRF_COOKIE_NAME的默认值可在Django包目录下/conf/global_settings.py中查看
|
|
解决办法
选择了和上面博客一样的解决方案,转发一下HTTP_X_CSRFTOKEN
|
|
评论