在反应中获取未定义的cookie.load('csrftoken')

时间:2020-07-22 17:47:34

标签: reactjs django-rest-framework react-cookie

我正在我的 Django 后端(DRF)上发送axios.put请求。我正在使用反应。 GET请求似乎很好地工作。这是我的代码:

const options =  {headers: 
  {"X-CSRFToken": cookie.load('csrftoken')
}}

axios
.put(`/api/shippers/${values.id}/`,values, options)
.then(res => {
  console.log(res)
  return res
})
.catch(err => {
  console.log(err);
})

但是我在cookie.load('csrftoken')中得到的都是未定义。即使在我的浏览器Cookie中设置了csrftoken。

enter image description here

1 个答案:

答案 0 :(得分:1)

我自己解决了这个谜。实际上,我无法使用react cookie.load函数从浏览器读取csrftoken cookie。因为在我的Django后端中, CSRF_COOKIE_HTTPONLY 设置为True。根据{{​​3}},如果将此值设置为True,则无法使用JavaScript读取csrftoken值。解决方法是将此值设置为False,现在cookie.load可以正常工作。

session_id也是如此,必须将 SESSION_COOKIE_HTTPONLY 设置为False。