【问题标题】:Forbidden (CSRF cookie not set.) with React and axios使用 React 和 axios 禁止(未设置 CSRF cookie。)
【发布时间】:2019-12-18 09:22:03
【问题描述】:

我一直在使用 React 中的登录组件,它可以将用户名和密码信息发送到 django 主机 127.0.0.1:8000/api-auth/login/,当我尝试发送它时,django 服务器会显示这个消息“禁止(未设置 CSRF cookie。):/api-auth/login/”

我尝试在我的应用设置中检查 django cors 选项,但没有任何效果,我还尝试在发布请求中发送一些标头。

这是我的 cors 设置

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
        'http://localhost:3000',        
)
CORS_ALLOW_HEADERS = (
    'csrftoken',
    'content-type',
    'X-CSRFTOKEN'
)
CSRF_COOKIE_NAME = "csrftoken"
CSRF_HEADER_NAME = 'X-CSRFTOKEN'

这是我的发帖请求

handleSubmit = event =>{

     var csrfCookie = Cookies.get('csrftoken'); 
     console.log('csrf cookie: ', csrfCookie); // set to undefined

     axios.defaults.xsrfHeaderName = "X-CSRFTOKEN";
     axios.defaults.xsrfCookieName = "csrftoken";
     axios.defaults.withCredentials = true;

     axios
          .post( 'http://127.0.0.1:8000/api-auth/login/', {
                    username : this.state.username,
                    password : this.state.password
                },{
                    headers: {"csrftoken": csrfCookie},
                })
          .then(res => console.log('Results: ' + res))
          .catch(err => console.log('Login error: ' + err))
}

注意:我的任何观点都没有@csrf_exempt

【问题讨论】:

  • 您找到解决方案了吗?我也有类似的问题...

标签: python reactjs django-rest-framework


【解决方案1】:

请将CSRF_COOKIE_SECURE = True 添加到您的设置文件中

【讨论】:

  • 它不起作用。我认为这可能与 Cookies.get('csrftoken') 有关,但我不知道如何解决。
猜你喜欢
  • 2012-05-03
  • 2016-11-26
  • 2022-09-27
  • 2020-01-16
  • 2019-12-29
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
相关资源
最近更新 更多