Django的csrf防御机制
django CSRF
2023-06-13 09:13:14 时间
前景:
Html页面的表单没有完全使用Django
的form进行渲染,故Js
不能使用$('#ClassID').serialize()
来获取Csrf
和Data
,然后报错CSRF token missing or incorrect.
原因:
Django
第一次响应来自某个客户端的请求时,会在服务器端随机生成一个Token
,把这个Token
放在Cookie
里。然后每次Post
请求都会带上这个Token
, 这样可以能避免被Csrf
攻击。所以会在每个Html
模板中增加一个 {% csrf_token %}
标签。
视图函数返回Csrf的三种方式
return render_to_response('Account/Login.html',data,context_instance=RequestContext(request))
return HttpResponse(_template.render(context, request))
return render(request, 'xxx.html', data)
Html中的展现形式
解决
1.通过Js先获取到Csrf值
<script>
const csrftoken = document.querySelector('[name=csrfmiddlewaretoken]').value;
</script>
2.通过在Ajax设置请求头传递
<script>
$.ajax({
headers: {'X-CSRFToken': csrf_token},
})
</script>
相关文章
- django在docker环境中断点调试
- Django模板过滤器
- Django(62)自定义认证类「建议收藏」
- uwsgi部署django_django调用python脚本
- pycharm django环境搭建_java项目框架搭建流程
- django_2
- (小说版)【简历优化平台-4】js魔改文件上传,django轻松接收
- Django Ajax动态图形监控
- Django+Celery学习笔记4——django+celery+redis周期任务Crontabs设置
- django_filters TypeError: __init__() got an unexpected keyword argument 'name'
- window + apache + django + mod_wsgi 一直响应中的解决办法
- python-Django-表单验证(二)
- Django REST Framework-视图集(四)
- django django-import-export 自定义字段的实现详解编程语言
- Django 采用新的项目治理模式
- Linux系统下部署Django网站快速指南(linux 部署django)