分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

Django 如何让ajax的POST方法带上CSRF令牌

发布时间:2023-09-06 01:56责任编辑:彭小芳关键词:POST

大家知道,在大前端领域,有一种叫做ajax的东东,即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),它被用来在不刷新页面的情况下,提交和请求数据。如果Django服务器接收的是一个通过ajax发送过来的POST请求的话,那么将很麻烦。何也?因为在ajax中,没有办法像form表单中那样携带{% csrf_token %}令牌。那怎么办呢?好办!在你的前端模版的JavaScript代码处,添加下面的代码:

// 使用jQuery库function 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;}var csrftoken = getCookie(‘csrftoken‘);function csrfSafeMethod(method) { ???// 这些HTTP方法不要求CSRF包含 ???return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));}$.ajaxSetup({ ???beforeSend: function(xhr, settings) { ???????if (!csrfSafeMethod(settings.type) && !this.crossDomain) { ???????????xhr.setRequestHeader("X-CSRFToken", csrftoken); ???????} ???}});

上面代码的作用就是让你的ajax的POST方法带上CSRF需要的令牌,它依赖jQuery库,必须提前加载jQuery。这也是Django官方提供的解决方案,请参考。

  至此。

Django 如何让ajax的POST方法带上CSRF令牌

原文地址:https://www.cnblogs.com/wcwnina/p/9099561.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved