对于使用Ajax时cookie中找不到csrf_token的解决方法

news/2024/5/18 8:23:51 标签: csrf_token, cookie, Ajax

问题是这样的,项目中使用的post请求全部是Ajax形式的,而且也使用了

'django.middleware.csrf.CsrfViewMiddleware',

中间件,但是访问页面时却提示找不到csrf_token异常。

 

解决办法:

在页面任意地方加{% csrf_token %}

原因:CsrfViewMiddleware这个中间件会在页面渲染时,检测{% csrf_token %}标签,如果有这个标签,CsrfViewMiddleware就会在cookie和{% csrf_token %}的位置存入csrf_token值。

可以用下面的js函数把csrftoken放到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", $.cookie("csrftoken"));
        }
    }
});

 


http://www.niftyadmin.cn/n/1455079.html

相关文章

Mysql循环游标并作为其中一个参数插入到另一个表中

-- 创建存储过程 DROP PROCEDURE IF exists init_budget_proc; CREATE PROCEDURE init_budget_proc() BEGINDECLARE p_ou VARCHAR (64);-- 遍历数据结束标识DECLARE done varchar(2);-- 创建游标DECLARE ou_cur CURSOR FOR SELECT es.portalorg_ou as ou FROM shop_info es wh…

forms组件笔记

为什么要用forms组件 一般前端js代码可以对数据进行普通校验,但是js可以被绕过,例如爬虫,所以后端必须做校验,保证数据安全。前端做校验可减轻后端压力。forms特点 自动生成表单html代码 校验数据 返回校验信息及html代码使用form…

在XML中嵌入一个图片,一般采用转换为Base64 的做法(含转出代码)

现在做一个项目&#xff0c;完全使用XSD&#xff0c;如果采用Image 默认的byte[] 方式输出成XML &#xff0c;就会很崩溃&#xff0c;会输出如下: <Image> <byte>-1</byte> <byte>-12</byte> <byte>158</byte> <…

Java设计模式——调停者模式(Mediator)

调停者模式的意图是定义个对象&#xff0c;封装一组对象的交互&#xff0c;从而降低对象间的耦合度&#xff0c;避免了对象间显示的引用&#xff0c;并且可以独立的改变对象的行为。 过度耦合系统引入调停者 如果电脑没有主板 下面来看看调停者模式的UML类图&#xff1a…

API Hooking 的原理

昨天提到了如何用Hook Ole32 提供的两个API来实现Hook Drag & Drop的过程。算是给EasyHook库做一个广告吧。今天给大家讲讲EasyHook的实现原理。 API Hooking有两种&#xff0c;内核态级别的和用户态级别的。内核态级别的API Hooking也是很多病毒的实现原理&#xff0c;而且…

中间件(django)笔记

Django框架中的中间件 在settings.py文件中这里写的都是django框架用到的中间件 ps:对于字符串的模块名可使用 importlib.import_module(‘模块名’)导入 自定义django中间件 创建MiddleWare.py文件&#xff0c;目录格式如图 创建自定义中间件类 from django.utils.depreca…

Myeclipse8.5如何安装反编译工具

一、下载反编译插件工具 &#xff08;1&#xff09;下载插件 JadClipse 下载地址&#xff1a;http://jadclipse.sourceforge.net/wiki/index.php/Main_Page 注意myeclipse8.5需要JadClipse 3.3 &#xff0c;低于此版本&#xff0c;反编译会报错 这里是net.sf.jadclipse_3.3…

javascript容易犯错的陷阱

1. 最后一个逗号 如这段代码&#xff0c;注意最后一个逗号&#xff0c;按语言学角度来说应该是不错的&#xff08;python的类似数据类型辞典dictionary就允许如此&#xff09;。IE会报语法错误&#xff0c;但语焉不详&#xff0c;你只能用人眼从几千行代码中扫描。 <script…