cors解决跨域请求 和cors-headers组件
创建一个目录middlewares,新建一个cors.py代码如下:
from django.utils.deprecation import MiddlewareMixin class CorsMiddleWare(MiddlewareMixin): def process_response(self, request, response): response['Access-Control-Allow-Origin'] = '*' # 判断是否为复杂请求 if request.method == 'OPTIONS': response['Access-Control-Allow-Headers'] = 'Content-Type' response['Access-Control-Allow-Methods'] = 'PUT,PATCH,DELETE' return response
在settings注册中间件
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',
'xxx.middlewares.cors.CorsMiddleWare',#中间件所在路径 ]
安装
pip install django-cors-headers -i https://pypi.douban.com/simple/
INSTALLED_APPS = ( ... 'rest_framework', 'corsheaders', )
setting中间件设置
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', #放在中间件的最上面,就是给响应头加上了一个响应头跨域 ... ]
settings需要添加跨域白名单
# CORS组的配置信息 CORS_ORIGIN_WHITELIST = ( #'www.xxx.cn:8080', # 如果这样写不行的话,就加上协议(http://www.xxxx.cn:8080,因为不同的corsheaders版本可能有不同的要求) 'http://www.xxxxx.cn:8080', ) CORS_ALLOW_CREDENTIALS = False # 是否允许ajax跨域请求时携带cookie,False表示不用
#允许客户端通过api.xxx.cn访问Django项目
ALLOWED_HOSTS = ["api.xxx.cn",]
要知道,你正在做的事情,对很多人都充满意义
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通