我正在我的 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。
答案 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。