6、Django设置csrf_token
Ajax请求设置csrf_token
方式一
通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。
$.ajax({
url: "/cookie_ajax/",
type: "POST",
data: {
"username": "yang",
"password": 123,
// 使用jQuery取出csrfmiddlewaretoken的值,拼接到data总
"csrfmiddlewaretoken": $("[name="csrfmiddlewaretoken"]").val()
},
success: function(data){
console.log(data);
}
})方式二
通过获取返回的cookie中的字符串,放置在请求头中发送。
注意: 需要引入一个jquery.cookie.js插件。
或者用自己写一个getCookie方法:
每一次都这么写太麻烦了,可以使用$.ajaxSetup()方法为ajax请求统一设置。
如果使用从cookie中取csrftoken的方式,需要确保cookie存在csrftoken值。
如果你的视图渲染的HTML文件中没有包含
, Django可能不会设置CSRFtoken的cookie。
这个时候需要使用ensure_csrf_cookie()装饰器强制设置Cookie。
如何取消 csrf_exempt
基于类
在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问。那么对于基于类的视图,我们应该怎么办呢?
简单来说可以有两种访问来解决
方法一:在类的 dispatch 方法上使用 @csrf_exempt
方法二:在 urls.py 中配置
基于视图
Last updated