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',#中间件所在路径 ]
复制代码

 

cors-headers组件

安装

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",]

 

posted @   阿U-root  阅读(575)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示