Django REST framework 框架下 CSRF 问
2018-04-26 本文已影响195人
SingleDiego
要在 REST 框架使用 POST
,PUT
等方法,需要在 HTTP 头的 X-CSRFToken
带上 CSRF 信息。
我们的做法是先引入一个 Cookie 库:https://github.com/js-cookie/js-cookie/
然后添加上以下代码:
var csrftoken = Cookies.get('csrftoken')
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
jQuery.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});