如何解决vue-resource在Django项目中POST请求时遇到的CSRF问题?

2026-04-05 09:378阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计324个文字,预计阅读时间需要2分钟。

如何解决vue-resource在Django项目中POST请求时遇到的CSRF问题?

公司近期用vue编写前端,遇到使用vue-resource进行POST数据操作时的一些问题,记录如下:

vue-resource的POST请求:javascriptthis.$http.post('/someUrl', data, [options]).then(function(response) { // 响应成功回调}, function(response) { // 响应错误回调});

公司最近用vue写前端,用vue-resource遇到的一些问题,现在记录下来。

vue-resource post数据

this.$stackoverflow.com/a/26639895

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

如何解决vue-resource在Django项目中POST请求时遇到的CSRF问题?

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问题的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

本文共计324个文字,预计阅读时间需要2分钟。

如何解决vue-resource在Django项目中POST请求时遇到的CSRF问题?

公司近期用vue编写前端,遇到使用vue-resource进行POST数据操作时的一些问题,记录如下:

vue-resource的POST请求:javascriptthis.$http.post('/someUrl', data, [options]).then(function(response) { // 响应成功回调}, function(response) { // 响应错误回调});

公司最近用vue写前端,用vue-resource遇到的一些问题,现在记录下来。

vue-resource post数据

this.$stackoverflow.com/a/26639895

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

如何解决vue-resource在Django项目中POST请求时遇到的CSRF问题?

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问题的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。