问题描述
前端 vue, 后端 django 。前端在发送post到后端时返回 403:CSRF Failed: CSRF token missing or incorrect
原因
django,会对合法的跨域访问做这样的检验,cookies里面存储的’csrftoken’,和post的header里面的字段”X-CSRFToken’作比较,只有两者匹配,才能通过跨域检验。否则会返回这个错误:CSRF Failed: CSRF token missing or incorrect
解决方法
在post 请求头中添加 X-CSRFToken ,这个值可以在 cookie 中获得
如下:
function getCookie (name) {
var value = '; ' + document.cookie
var parts = value.split('; ' + name + '=')
if (parts.length === 2) return parts.pop().split(';').shift()
}
export const register = parmas => { return axios.post(`${host}/users/`, parmas,{headers:{'X-CSRFToken': getCookie("csrftoken")}}) }