Django版本号:1.11.15

django中post请求报错:
Forbidden (403)
CSRF verification failed. Request aborted.

Help
Reason given for failure:
CSRF cookie not set.

方法1:不使用CSRF验证
全站禁用(不推荐)
去掉settings.py中MIDDLEWARE中的django.middleware.csrf.CsrfViewMiddleware中间件
例如如下配置,去掉django.middleware.csrf.CsrfViewMiddleware即可
MIDDLEWARE = [
'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',
]

局部禁用(推荐)
或者在不想进行csrf保护的view可以加上@csrf_exempt
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def ajaxGetList(r):

方法2:使用CSRF验证

form表单中添加
{% csrf_token %}

views.py代码
from django.template.context_processors import csrf
from django.http import HttpResponse
from django.template import Context, loader

def my_view(request):
c = {}
c.update(csrf(request))
# ... view code here
return HttpResponse(loader.get_template('index.html').render(c))

旧版本的代码:
from django.core.context_processors import csrf
from django.shortcuts import render_to_response
def my_view(request):
c = {}
c.update(csrf(request))
# ... view code here
return render_to_response("a_template.html", c)

js代码
在发 ajax POST 请求时,加一个 X_CSRFTOKEN 的 header
// using jQuery
var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
或者
var csrftoken = $.cookie('csrftoken');
代码1:
function submitForm(){
var user = $('#user').val();
$.ajax({
url: '/csrf1.html',
type: 'POST',
headers:{'X-CSRFToken': csrftoken},
data: { "user":user},
success:function(arg){
console.log(arg);
}
})
}

代码2:
// 去cookie中获取值
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
function DoAjax(){
$.ajax({
url: '/csrf/',
type: 'POST',
data: {'k1': 'v1'},
success: function (data) {
console.log(data);
}
})
}

PS:
1.csrf 装饰器
全局:
  中间件 django.middleware.csrf.CsrfViewMiddleware
局部:
from django.views.decorators.csrf import csrf_exempt,csrf_protect
@csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。
@csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。
2.django建议使用django.middleware.csrf.CsrfViewMiddleware进行全局控制,不提倡使用@csrf_protect进行单view控制,因为这样可能会有遗漏。如果不想进行csrf保护的view可以加上@csrf_exempt。 使用CSRF验证:把django.core.context_processors.csrf加到配置文件的 TEMPLATE_CONTEXT_PROCESSORS,或者手动生成csrftoken并加到template context。
3.django1.11版csrf官方文档:https://docs.djangoproject.com/en/1.11/ref/csrf/#django.views.decorators.csrf.csrf_protect

django csrf使用教程,解决Forbidden (403)CSRF verification failed. Request aborted.的更多相关文章

  1. Django提交POST表单“CSRF verification failed. Request aborted”问题的解决

    1.环境 python 3.4 Django 1.7 Visual Studio 2015 PTVS 2.问题 提交表单,出现以下错误: CSRF verification failed. Reque ...

  2. django程序报错CSRF verification failed. Request aborted.

    django程序的html页面中form的method='post'的时候报错 Forbidden (403) CSRF verification failed. Request aborted.He ...

  3. Django1.8:403错误:CSRF verification failed. Request aborted.

    问题:Django 403错误:CSRF verification failed. Request aborted.     原因:需要加cookie验证 解决方法: 1.在view.py中增加 fr ...

  4. CSRF verification failed. Request aborted.错误解决办法

    在Django项目的页面,提交form表单POST请求时,会出现报错:CSRF verification failed. Request aborted. 需要在form表单中加:{% csrf_to ...

  5. CSRF verification failed. Request aborted.

    在使用Django提交Post表单时遇到如下错误: Forbidden (403) CSRF verification failed. Request aborted. 原因在"帮助&quo ...

  6. django框架中form表单Post方法无法提交 Forbidden (403) CSRF verification failed. Request aborted.

    问题如图: 解决方法: 在视图函数中引入并使用装饰器 from django.views.decorators.csrf import csrf_exempt @csrf_exempt

  7. Django 403错误:CSRF verification failed. Request aborted

    网上有解决办法,我自己的组合是: 一,FORM加标识 <form action="" method="post"> {% csrf_token %} ...

  8. Django中关于“CSRF verification failed. Request aborted”的问题

    遇到该问题的情境 在Django中采用Ajax提交表单,涉及到跨域问题. 解决措施 在html页面中的表单内添加如下代码: {% csrf_token %} 在视图函数所在的py文件中添加如下代码: ...

  9. CSRF verification failed. Request aborted. 表单提交方法为POST时的报错

    本人所用Django版本为1.11,在设置请求方法为POST时,遇到标题中的错误,尝试了多种方法,最终通过下面的操作来修复: 在template文件中添加图中红框部分 接着,导入csrf_exempt ...

随机推荐

  1. Array.apply(null, {length: 20})和Array(20)的理解

    话说今晚在学习Vue.js教程里:Render函数,这一章节是发现了一个问题,就是利用下面的这个render函数可以渲染20个重复的段落: render: function (createElemen ...

  2. L245

    The State Council will lay down new rules that aim to make management compatible with internationall ...

  3. git中工作区,缓存区,本地库,远程库的简要区别

    git中工作区,缓存区,本地库,远程库的简要区别 实际上前三个名词对应到实体,都是你从远程仓库克隆下来的那个项目目录!只不过工作区就是你实际看到的目录和目录里的内容,当你修改/添加/删除了从远程仓库c ...

  4. 解决You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order (order_name, customer)

    在学习hibernate一对多映射关系时,根据视频学习的时候,例子是顾客和订单的问题,一个顾客有多个订单.按照视频中的敲代码出现了You have an error in your SQL synta ...

  5. 跨交换机划分vlan配置

    实验要求:使两台交换机上同一vlan的主机能够通信,不同vlan的主机不能通信 拓扑如下: 涉及内容有: 1.vlan的创建和划分 2.端口trunk模式的设置 配置如下: Switch1 enabl ...

  6. DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证

    本篇文档学习,DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证 1.取消MRP进程 备库查询进程状态select process,client_process,sequen ...

  7. PRCT-1302 the OCR has an invalid ip address

    PRCT-1302 the OCR has an invalid ip address 1. 报错信息 an internal error occurred within cluster verifi ...

  8. innerHTML与innerText功能的强大

    例: <div id="study"> <span style="color:red">学习</span>study < ...

  9. sudo命令 和限制root 远程登陆

    1.对sudo命令的配制,输入 visudo 然后,找到92行进行以下配制 以下就是效果 比如: 如果要同时给两个普通用户设置这样子的权限,就可以用另一种方式,下面这种方式不可取的 而是用这种 效果如 ...

  10. SQL经常使用的一些词

    sp_helptext: 例:exec sp_helptext proc_name(查看存储过程的定义) sp_rename: 例:exec sp_rename 'proc_name1','proc_ ...