django


[TOC] 一、前言 1。我的Django APP(omserver)有在settings.py里启用csrf_token middleware 2。在我的所有form里都有加{% csrf_token %}标签代码里有两种方式的POST,1)有form: 直接将整个form serialize(),然后 ajax submit 2)没有form: 3。在开发环境跑所有功能都OK。 4。开发环境和部署环境的一个差别1)开发环境访问后台是直接连接后台的django地址:http://localhost:8000/omserver2)部署环境访问后台是跟前端共用了一个域名:https://x.rg4.net ,然后这个域名再通过nginx反向代码分别跳转到前台(http://localhost:3000)和后台(http://localhost:8000/omserver) 二、各种尝试 尝试1:怀疑是不是过nginx后,cookie丢失?nginx反向路由加一些头 结果:没用,403依旧。 尝试2:怀疑csrf token没传到django?在我的app里加一个 middleware,拦截所有的request,并将其内容打出来以确认 django有没有收到前端传过来的csrf token 1)先在我的app omserver下创建一个middleware.py,然后加入以下代码 2)将这个middleware加入到settings.py 结果:django有收到前端传过来的csrf token,但就是403 这里打印出来的csrfmiddlewaretoken值,与我在前面javascript ajax post时打印出来的值是一毛一样的,为什么报错? 尝试3:分析csrf.py代码,将校验过程打印出来 1)拿到检验错误原因为:{“detail”:”CSRF Failed: Origin checking failed – https://x.rg4.net does not match any trusted origins.”}2)重新修改settings.py,将前面禁用掉的csrf middleware重新打开 同时在settings.py里加入 这个时候报错变成了 注:中间有碰到一个新问题,刷新前端界面报错 […]

[未解决]将xiaoluo-3d部署到公网后,出现所有POST都报403错误