网络编程
位置:首页>> 网络编程>> Python编程>> 在django中使用post方法时,需要增加csrftoken的例子

在django中使用post方法时,需要增加csrftoken的例子

作者:梓沂  发布时间:2023-08-12 06:44:34 

标签:django,post方法,csrftoken

从百度查到在django中,使用post方法时,需要先生成随机码,以防止CSRF(Cross-site request forgery)跨站请求伪造,并稍加修改:

注:这是一个js文件,需要引入到html模板中:<script src="/static/javascript/post_need_csrftoken.js"></script>

这样做比使用{% csrf_token %}方便


$(function () {
 $.ajaxSetup({
   headers: { "X-CSRFToken": getCookie("csrftoken") }
 });
});

// 为防止CSRF(Cross-site request forgery)跨站请求伪造,发post请求时需要在cookie中创建随机码
   function getCookie(name)
   {
     var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
     /*
       上面这句话相当于:
     var arr;
     var reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
      */
     if(arr=document.cookie.match(reg))
       return decodeURI(arr[2]);  //ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,
                     // 因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。
     else
       return null;
   }

补充知识:Django解决前端/客户端POST失败提示csrf_tokenxxx的问题

解决:把settings.py里把MIDDLEWARE中的

django.middleware.csrf.CsrfViewMiddleware

删除掉就好了

如果你不想删除,并且你是web端的话,在form表单里加一句 {%csrf_token%} 就好了


<form>
 {%csrf_token%}
 <!-- 其它代码 -->
</form>

这个CRSF主要也是起一种保护验证的作用,看个人需要来保留吧

如果是安卓或者其它端,建议之间采取前者把那行代码删掉就行了

来源:https://blog.csdn.net/qq_27361945/article/details/79536114

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com