博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax请求设置csrf_token
阅读量:4363 次
发布时间:2019-06-07

本文共 1903 字,大约阅读时间需要 6 分钟。

方式1

通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。

$.ajax({  url: "/cookie_ajax/",  type: "POST",  data: {    "username": "chao",    "password": 123456,    "csrfmiddlewaretoken": $("[name = 'csrfmiddlewaretoken']").val()  // 使用jQuery取出csrfmiddlewaretoken的值,拼接到data中  },  success: function (data) {    console.log(data);  }})

方式2

$.ajaxSetup({    data: {csrfmiddlewaretoken: '{
{ csrf_token }}' },});

方式3

通过获取返回的cookie中的字符串 放置在请求头中发送。

注意:需要引入一个插件。

$.ajax({ headers:{"X-CSRFToken":$.cookie('csrftoken')}, #其实在ajax里面还有一个参数是headers,自定制请求头,可以将csrf_token加在这里,我们发contenttype类型数据的时候,csrf_token就可以这样加 })

方式4

// Ajax CSRF in cookies startfunction getCookie(name) {    var cookieValue = null;    if (document.cookie && document.cookie !== '') {        var cookies = document.cookie.split(';');        for (var i = 0; i < cookies.length; i++) {            var cookie = jQuery.trim(cookies[i]);            // Does this cookie string begin with the name we want?            if (cookie.substring(0, name.length + 1) === (name + '=')) {                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));                break;            }        }    }    return cookieValue;}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'));        }    }});// Ajax CSRF in cookies end

注意

  1. 如果使用从cookie中取csrftoken的方式,需要确保cookie存在csrftoken值。
  2. 如果你的视图渲染的HTML文件中没有包含 {% csrf_token %},Django可能不会设置CSRFtoken的cookie。
  3. 这个时候需要使用ensure_csrf_cookie()装饰器强制设置Cookie。
django.views.decorators.csrf import ensure_csrf_cookie@ensure_csrf_cookiedef login(request):    pass

转载于:https://www.cnblogs.com/meilong/p/Ajax-qing-qiu-she-zhicsrftoken.html

你可能感兴趣的文章
Redis总结(四)Redis 的持久化(转载)
查看>>
About_Return
查看>>
10.24给TA的话
查看>>
数组_leetcode209
查看>>
日系插画学习笔记(三):光影与结构
查看>>
C语言——几道习题
查看>>
CentOS——自己安装网卡驱动
查看>>
工具系列 | VScode Remote 远程开发与调试(告别SSH)
查看>>
Django QuestSet API (官方文档)
查看>>
2018 Multi-University Training Contest 10
查看>>
ArcGIS JavaScript API4.8 底图选择的几种方案
查看>>
Linux 后台执行命令
查看>>
多线程学习笔记
查看>>
C# 队列集合的使用
查看>>
POJ 2947 Widget Factory (高斯消元 判多解 无解 和解集 模7情况)
查看>>
PC-LINT
查看>>
Hadoop配置安装手册
查看>>
【agc017E】Jigsaw
查看>>
有关python&&c++的散碎的一些知识点_随时更新
查看>>
java servlet中上传文件的简单实现(基于第三方jar)
查看>>