vue+django的csrf攻击问题解决思路

问题起因:由于本项目是前后端分离,所以在原本的django里使用template解决csrf问题是不现实的

解决过程:

1.在django的view里设置request的cookie,让他带csrftoke。

2.修改前端的代码,获取cooke和请求头里的token值做比较。

实现的代码如下:

后台view:

@require_http_methods(['GET',"POST"])
def register_or_login(request):
print request
request.META["CSRF_COOKIE_USED"] = True
get_token(request)
uf = UserForm(request.POST)
print request.POST
   ......
前端代码如下:
methods: {
back () {
this.$router.back(-1)
},
getCookie (name) {
var value = '; ' + document.cookie
var parts = value.split('; ' + name + '=')
if (parts.length === 2) return parts.pop().split(';').shift()
},
post里增加请求头内容
this.axios({
method: 'post',
url: this.linkPrefix + '/users_api/register_or_login',
headers: {'X-CSRFToken': this.getCookie('csrftoken')},
data: postData
})、

如此完美解决了该问题
原文地址:https://www.cnblogs.com/zhangtq/p/9759061.html