vue-resource post数据时碰到Django csrf问题的解决

2020-06-16 06:39:32易采站长站整理

这是一个django的跨域访问问题。

django,会对合法的跨域访问做这样的检验,cookies里面存储的’csrftoken’,和post的header里面的字段”X-CSRFToken’作比较,只有两者匹配,才能通过跨域检验。否则会返回这个错误:CSRF Failed: CSRF token missing or incorrect

解决方法

由上面的分析可以得出,只要在POST请求的header添加一个字段’X-CSRFToken’,这个字段和cookie里面的‘csrftoken’一样就好了。

在post请求添加一个header,内容如下:

{headers: {‘X-CSRFToken’: this.getCookie(‘csrftoken’)}

其中,getCookies是这样一个函数,用于将cookies里面的内容按名字取出:


getCookie (name) {
var value = '; ' + document.cookie
var parts = value.split('; ' + name + '=')
if (parts.length === 2) return parts.pop().split(';').shift()
},

最终的POST请求如下:


params.append('orderID', orderId)
params.append('dishID', dishId)
axios.post(loginUrL, params, {headers: {'X-CSRFToken': this.getCookie('csrftoken')}})
.then(response => {
console.log(response)
cb()
})
.catch(error => {
console.log(error)
errorCb()
})

以上这篇vue-resource post数据时碰到Django csrf问题的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。