django跨站请求伪造(csrf)解决方法
2019-06-18 19:07
127 查看
我们写一个简单的前端网页
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>修改密码</title> </head> <body> <form method="post" action="/user/updatepwd/"> 用户名<input type="text" name="username"> 旧电话<input type="text" name="oldpho"> 新电话<input type="text" name="newpho"> <input type="submit" value="确认"> </form> </body> </html>
再写相应的视图函数
def updatepwd(request): from user.models import UserInfo if request.method=='GET': return render(request,'updatepwd.html') else: username=request.POST.get('username') oldpho=request.POST.get('oldpho') newpho=request.POST.get('newpho') try: data=UserInfo.objects.get(name=username,phone=oldpho) print(data) except: return HttpResponse('错误') else: # user=UserInfo() # user.phone=newpho # user.save() UserInfo.objects.update( phone=newpho ) return HttpResponse('ok')
写好URL开启后端服务器
浏览器访问此页面,可以正常访问
填入数据提交,遇到了这个报错
这是因为第一次访问是get请求,第二次是post请求需要发送数据,而django自带防御跨站请求伪造组织这次请求,有两种解决方式。
第一种在前端代码中加入
{%csrf_token%}
第二种在setting.py文件中关闭CSRF防御,如下代码注释掉此中间件
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
注意第二种方法一般只用于调试。
相关文章推荐
- Django POST请求 错误 forbidden(403) CSRF verification failed. Request aborted 解决方法
- 关于Django中Csrf问题的解决方法
- Django: csrf防御机制 以及解决方法
- Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法
- django csrf 引起的403解决方法
- Django 对于CSRF verification failed.错误的解决方法
- Django csrf报错问题的解决方法
- django 中 csrf问题 的解决方法
- Django 解决 csrf_protect的方法
- Django跨域请求CSRF的方法示例
- Django Template Error 及解决方法
- django 1.10 CSRF验证失败的解决过程
- 403 Forbidden."CSRF token missing or incorrect"响应的处理解决方法
- python&django 常见问题及解决方法
- django - 本地访问不了静态文件的解决方法
- 解决django出现CSRF token missing or incorrect.错误
- django项目中用户密码更改后的会话失效解决方法
- XSS CSRF SQL 注入解决方法
- Django报错403 Forbidden. CSRF token missing or incorrect的解决办法
- Django manage.py sunserver 编码问题记录和解决方法!