跨源访问问题-Django 2.1.7

时间:2019-02-22 09:38:36

标签: python django cross-domain

我已经遍历了所有的SO链接,重新安装了django和django-cors-headers,然后跟随this到T,但是我们得到了

  

不允许飞行前错误飞越原点

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

这是一个问题,因为给定的 Django 包适用于 Djangov2.2> 这里你使用的是 2.1,所以它不支持它。

您需要手动从 HttpResponse 传递标头