1.Django+vue开发发送POST请求
1.针对el-select这种组标签,采用了 {% csrf_token %}的 方式
2.对于el-input 这种单标签,采用了getCookie的方式
2.Ajax实现表单提交
Ajax向服务器发送POST请求时,请求参数必须添加csrf_token的信息,否则服务器会视该请求为恶意请求。
<script>
function submitForm(){
var csrf = $('input[name="csrfmiddlewaretoken"]').val();
var user = $('#user').val();
var password = $('#password').val();
$.ajax({
url : '/csrf1.html',
type : 'POST',
data : { "user":user, "password":password, "csrfmiddlewaretoken":csrf}
success:function(arg){
console.log(arg);
}
})
}
</script>
3.特殊情况
如果在配置文件setting.py 中删除了中间件CsrfViewMiddleware,这样是整个网站都取消了CSRF防护。在全站没有CSRF防护的情况下,又想对某些请求设置CERF防护,那么在模板上添加模板语法{% scrf_token %},然后在相应的视图函数中添加装饰器@csrf_protect即可实现
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def registerView(request):
pass
return render(request,'user.html',locals())
如果只是在模板上删除{% csrf_token %},并没有在相应的视图函数中设置过滤器@csrf_exempt,那么当用户提交表单时,程序因CSRF验证失败而抛出403异常的页面