Django POST请求报错CSRF token missing or incorrect解决

在JS中,使用post方法提交数据到Django后台,如果页面没有做跨站伪造,则会被浏览器拒绝访问,报错如下:

1
2
Forbidden (CSRF token missing or incorrect.): /appblog/payment
[18/Jun/2020 08:52:08] "POST /appblog/payment HTTP/1.1" 403 2513

解决方法:前端ajax请求提交CSRF token信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="zh">
{% csrf_token %}
<head>

...

<script>
...
var csrfToken = $("[name='csrfmiddlewaretoken']").val();
//方法一
$.ajaxSetup({
data: {csrfmiddlewaretoken: csrfToken}
})
$.ajax({
url: '/payment',
type: 'post',
contentType: 'application/json;charset=utf-8',
data: data,
async: true,
//方法二
headers: {'X-CSRFToken': csrfToken},
//方法三
beforeSend: function(xhr, e) {
xhr.setRequestHeader('X-CSRFToken', csrfToken)
},

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :