1. 后端生成Token
增加一个接口用于生成 token 并返回
1
2
3
4
5
6
7
8
9
10
|
# views.py
def get_csrf_token(request):
token = django.middleware.csrf.get_token(request)
return JsonResponse({'token': token})
# urls.py
urlpatterns += [
path('get-token', get_csrf_token, name="get-token"),
]
|
2. 前端获取token
1
2
3
4
5
6
7
8
9
| $.ajax({
url: '/get-token/',
type: 'GET',
dataType: 'json',
success: function(data) {
// 设置token到cookie中 或者其他什么方式暂存
$.cookie('csrftoken', data.token);
}
});
|
3. 请求前附加头
1
2
3
4
5
6
7
8
9
10
| $.ajax({
url : 'YOUR_URL_HERE',
// 使用暂存的 token
headers: {'X-CSRFToken': $.cookie('csrftoken')},
type: 'POST',
dataType: 'json',
data: {},
success: function() {},
error: function(xhr, errMsg, err) {},
});
|
任何其他框架都可以用类似的方式来处理,只是生成的方法不同,头标识不同。