Django如何编写中间件以在收到OPTIONS请求时返回200状态码
Django OPTIONS请求统一返回200中间件编写方法
1. 编写中间件逻辑
在你的Django应用目录下新建middleware.py文件,添加如下代码:
from django.http import HttpResponse class OptionsRequestMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # 匹配OPTIONS请求 if request.method == "OPTIONS": # 直接返回200状态码,可选添加CORS相关响应头 response = HttpResponse(status=200) # 如果你需要支持跨域可放开下面的配置,按需修改 # response["Access-Control-Allow-Origin"] = "*" # response["Access-Control-Allow-Methods"] = "GET, POST, PUT, DELETE, OPTIONS" # response["Access-Control-Allow-Headers"] = "*" return response # 非OPTIONS请求继续走正常的处理流程 response = self.get_response(request) return response
提示:如果你项目已经集成了
django-cors-headers库,不需要自己写中间件,只需配置CORS_ALLOW_METHODS包含OPTIONS即可,不过上述原生实现不依赖任何第三方库,兼容性更强。
2. 注册中间件
打开项目的settings.py文件,找到MIDDLEWARE配置项,把上面写的中间件添加到列表的靠前位置(建议放在django.middleware.common.CommonMiddleware之前即可):
MIDDLEWARE = [ # 其他已有的内置/自定义中间件,比如安全相关的中间件 "你的应用名.middleware.OptionsRequestMiddleware", # 替换成你实际的应用名和中间件路径 "django.middleware.common.CommonMiddleware", # 剩下的其他中间件 ]
验证效果
配置完成后重启Django服务,发送OPTIONS请求到任意接口,都会直接返回200状态码,不会走到后续的视图逻辑,满足测试场景需求。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

