DRF框架中csrf异常
Posted pythonywy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DRF框架中csrf异常相关的知识,希望对你有一定的参考价值。
一.报错信息
"detail": "CSRF Failed: CSRF cookie not set."
二.解决办法
方法一:
在配置文件中配置
REST_FRAMEWORK =
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
)
方法二.在提交信息中加上csrf_token:
页面form框中设置
% csrf_token %
这代码在页面中的显示内容
<input type="hidden" name="csrfmiddlewaretoken" value="l9gICFdVzkDkLExUoAPRpE0ElkGtG70Xmn6u536Keo3kaQPXEeC00g5kbnY3vJGd">
如果是ajax提交的话
在data中加上
data:
..
..
'csrfmiddlewaretoken': 'csrf_token' //或者 'csrfmiddlewaretoken':'l9gICFdVzkDkLExUoAPRpE0ElkGtG70Xmn6u536Keo3kaQPXEeC00g5kbnY3vJGd'
三.奇怪现象肯能与django中中间件有冲突
django中间件
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',
]
如果在中间件中把‘django.middleware.csrf.CsrfViewMiddleware‘,
注释掉你用方法二的时候也会报错,只有方法一能正常使用
以上是关于DRF框架中csrf异常的主要内容,如果未能解决你的问题,请参考以下文章
drf框架 2 drf框架的请求生命周期(as_view和dispatch方法), 请求解析渲染响应异常, 序列化组件 ,ORM配置回顾(media文件配置),应用在settings.py中(代码片