CSRF cookie not set |
提示就是说
未设置 CSRF cookie
# CSRF 是啥?
表示 django 全局发送 post 请求均需要字符串验证
功能: 防止跨站请求伪造的功能
工作原理:客户端访问服务器端,在服务器端正常返回给客户端数据的时候,而外返回给客户端一段字符串,等到客户端下次访问服务器 端时,服务器端会到客户端查找先前返回的字符串,如果找到则继续,找不到就拒绝。
访问流程:客户端 -》URL 路由系统 - 》 CSRF -》视图函数
我这里要写的是一个内部使用的 api 接口,也不大会有 跨站请求伪造
所以这里提供两个不是很推荐,但是非常简单的方式解决这个问题
既然不需要 CSRF 这里我们就把 CSRF 检测关掉即可
# 解决方法 1:
- 在你创建的项目中,找到
settings.py
文件 - 文件 settings.py 找到
MIDDLEWARE
参数 - 注释掉
'django.middleware.csrf.CsrfViewMiddleware',
即可
就像这样
# 解决方法 2:
第二种方法和第一种差不多
上面是的注释掉 django.middleware.csrf.CsrfViewMiddleware
,这是一个全局的设置
其实我们也可以对单个 api 进行特别设置
这里 我们使用 @csrf_exempt 来进行处理
@csrf_exempt 是用来取消当前函数防跨站请求伪造功能
- 找
views.py
文件,这是我们处理 api 规则的 - 导入
from django.views.decorators.csrf import csrf_exempt
- 我们在对应的函数上加上
@csrf_exempt
就像这样,是不是很简单