Skip to main content
 首页 » 编程设计

python之跨源访问问题之django 2.1.7

2024年08月14日43zhwl

我几乎浏览了所有 SO 链接,重新安装了 django 和 django-cors-headers 并关注了 this到 T 但我们得到

pre flight error cross origin not allowed

Django 版本 2.1.7

settings.py的相关部分

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'corsheaders', 
    'uploads.core', 
] 
 
MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'corsheaders.middleware.CorsMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'corsheaders.middleware.CorsPostCsrfMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 
CORS_ORIGIN_ALLOW_ALL = True 

请您参考如下方法:

CorsMiddleware 应该放在尽可能高的位置,尤其是在任何可以生成响应的中间件之前,例如 Django 的 CommonMiddleware 或 Whitenoise 的 WhiteNoiseMiddleware。如果不是之前,它将无法将 CORS header 添加到这些响应中。

MIDDLEWARE = [ 
 
    'corsheaders.middleware.CorsMiddleware',        # <-- should be at the top 
 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'corsheaders.middleware.CorsPostCsrfMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
]