Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误

解决方法1:

注释掉此段代码,即可。

缺点:导致Django项目完全无法防止csrf攻击

解决方法2:

在 views.py文件中

#导入,可以使此次请求忽略csrf校验
from django.views.decorators.csrf import csrf_exempt #在处理函数加此装饰器即可
@csrf_exempt
def post(request):
name=request.post['name']
return HttpResponse('welcome!{}'.format(name))

缺点:导致此次请求无法防止csrf攻击,但是比第一种好很多

解决方法3:

针对使用模版进行开发的MTV模式,在模版文件提交form表单代码中添加

但是本人不使用MTV模式进行开发,只使用 Restful模式,所以对于Restfu模式开发的,使用第四种解决方法。

解决方法4:

django的csrf安全工作顺序是:先从后台获取csrf_token 并发送给前端,然后前端在进行form表单提交时,把带有名为csrfmiddlewaretoken,值为 csrf_token  的字段一起发送给后端进行校验。

所以此解决方案便是按照此逻辑,先通过一个接口获取 csrf_token,然后在form表单中一起提交给后端校验

from django.template.context_processors import csrf

def get_csrf(request):
#生成 csrf 数据,发送给前端
x = csrf(request)
csrf_token = x['csrf_token']
return HttpResponse('{} ; {}'.format(str(re), csrf_token))

然后在另一个POST请求中 加参数  名为:csrfmiddlewaretoken  值为 get_csrf函数返回的csrf_token  ,这样校验便成功

优点:完成了 csrf 安全校验

Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法的更多相关文章

  1. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)

    安卓(android)建立项目时失败.出现AndroidManifest.xml file missing几种解决方法?(总结中) Eclipse新建项目.遇到这种问题.注意例如以下: 1.文件名称最 ...

  2. 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结

    史上最全的CSS hack方式一览 2013年09月28日 15:57:08 阅读数:175473 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我 ...

  3. http协议 put、delete请求asp.net mvc应用,报404错误

    http协议 put.delete请求asp.net mvc应用,报404错误 更改web.config,在<modules>节点中设置 runAllManagedModulesForAl ...

  4. jquery-easyui的datagrid在checkbox多选时,行选中不正确应,去除高亮的解决方法

    jquery-easyui的datagrid在checkbox多选时,行选中不正确应,去除高亮的解决方法 工作中用到一个具有多选功能的easyui-datagrid在处理cell的点击事件时,不同 ...

  5. SourceTreet提交时显示remote: Incorrect username or password ( access token )(4种解决办法)

    引言 我因为第一次安装Sources Tree的时候进行破解时(跳过安装时的登录),因为操作失误造成了好多bug,导致Sources Tree不论提交,拉取,获取,都会报remote: Incorre ...

  6. Django中ajax发送post请求,报403错误CSRF验证失败解决办法

    今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了:很显 ...

  7. patch 请求时,关于id的报错问题

    在更新操作时,先显示要更新的数据内容,再修改 在发送patch请求时出现 After applying the update to the document {_id: ObjectId('55be3 ...

  8. 使用idea搭建maven项目时 java目录下的xml文件没有加载的解决方法

    今天在idea集成开发环境下 使用maven搭建了ssm项目,遇到了3个问题 首先我们先复习一下知识点: 第一步:在web.xml中配置spring监听器 <!-- spring监听器 加载sp ...

  9. koa2 get请求后台正常接收参数 前端报404错误

    刚学习一门技术时,总会踩一些坑. 前端代码 function del(mId){ $.ajax({ type:"get", url:"/delUser", da ...

随机推荐

  1. Python相关

    当Python源码编译以后,需要对一些依赖库重新安装,而且有些是要用pip去安装. python 文件.目录属性的操作os.path等os模块函数 https://blog.csdn.net/bytx ...

  2. width属性

    宽度属性 width:长度值|百分比|auto 最大宽度:max-width 最小宽度:min-width 说明:设置块级元素和替换元素的内容宽度.

  3. 从码云上下载react项目并配置成可运行状态

    (第一次写,如有不足之处,欢迎指出) 一.下载项目: 1.首先保证安装了git, 2.然后在本地想要存放项目位置打开git(Git Bash Here),再复制码云中如图所示的地址: 3.在git中输 ...

  4. Build up java environment(配置java环境)

    1,配置环境变量 我的电脑,右键计算机图标,点击“属性” 点击“高级系统设置” 点击“环境变量” “系统变量”一栏,点击“新建” 弹出输入“变量名”.“变量值”窗口 “变量名”输入“JAVA_HOME ...

  5. Arch Linux 硬盘引导-联网安装

    Arch Linux 硬盘引导-联网安装 ============https://www.archlinux.org/https://wiki.archlinux.org/https://wiki.a ...

  6. C++ 实验3 类和对象

    Part 2 #ifndef GRAPH_H #define GRAPH_H class Graph { public: Graph(char ch, int n); void draw(); pri ...

  7. 尝试document.getElementById()失败

    document.getElementById() document.getElementsByTagName() 电脑重启,新建文件后尝试成功

  8. Android L2TP Client Setup

    原文链接:http://www.softether.org/4-docs/2-howto/9.L2TPIPsec_Setup_Guide_for_SoftEther_VPN_Server/3.Andr ...

  9. sqlserver2008简介

    sql 数据库简介 应该掌握的部分: 1.  数据库的基本概念 2.  数据库模型的基本概念 3.  实体联系模型的基本概念 4.  关系模型的基本概念和性质 5.  数据库优化理论 6.  掌握创建 ...

  10. IO文件流

    定义:流是一种抽象的概念,通过流的方式组成无结构字符和字符序列,从流中取数据的操作进行输入输出.[io流的作用就是用流的方式进行输入输出] 常用语法: 1.   首先引用using.system.io ...