csrf跨站请求
一、csrf
跨站请求主要分为两种情况
- 1、使用
form
表单提交数据的时候 - 2、利用
ajax
提交数据的时候
二、在form
表单提交数据的时候只要在表单中添加csrf_token
三、使用ajax
提交数据的时候
1、在页面中添加
csrf_token
2、定义获取获取
cookie
的方法// 定义一个获取本地cookie function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); return arr != null ? unescape(arr[2]) : null; }
3、发送
ajax
请求// 定义一个校验的方法 function csrfSafeMethod(method) { // these HTTP methods do not require CSRF protection return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } // 发送前的 $.ajaxSetup({ beforeSend: function (xhr, settings) { if (!csrfSafeMethod(settings.type) && !this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); } } }); $('#btn').on('click', function () { $.ajax({ url: '/test1/', method: 'post', data: { username: $('#name').val() }, success: function (data) { console.log(data) } }) })
四、关于取消csrf
跨站请求的方式
- 1、在
settings.py
中取消中间件 - 2、使用本章节第五小节中的装饰器方式