django-cors-headers根本不工作

时间:2018-01-14 09:45:20

标签: python django django-cors-headers

好吧,最初我忘记了中间件类但是在添加它之后工作正常(这是一周前)。

现在,我回到我的工作站,发现它再次无效。

public class EmojiModel { private int id; private int price; public String urlFile; public EmojiModel(String urlFile) { this.urlFile=urlFile; } public String getEmojiFile() { return urlFile; } public void init(JSONDictionary data){ try{ urlFile = (String) data.get("urlFile"); id = Integer.parseInt((String) data.get("id")); price = Integer.parseInt((String) data.get("price")); }catch(Exception e){ e.printStackTrace(); } } } 标题根本没有设置。

我已经尝试了所有这些,将中间件置于顶部,在ACCESS_CONTROL_ALLOW_ORIGIN之前,但它只是不起作用。

这是我的 setting.py 文件:

CommonMiddleware

这是我得到的回应:

DEBUG = True

ALLOWED_HOSTS = ['*']

# Application definition
INSTALLED_APPS = [
    'account',
    'corsheaders',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'social_django',
]

# if DEBUG:
#     INSTALLED_APPS += 'corsheaders',
#     MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware', ]
# else:
#     MIDDLEWARE = []

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_ALLOW_ALL = DEBUG

2 个答案:

答案 0 :(得分:0)

# Cors headers

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)

答案 1 :(得分:0)

在项目的GitHub问题中找到了答案。

Access-Control-Allow-Origin仅在请求中包含origin标头时才包含在响应中。

浏览器会自动添加此标头,因此在使用您的API的网页上您应该不会看到CORS错误。

对我来说,此请求未返回任何Access-Control-Allow-Origin

curl -v -H "Content-Type: application/json" localhost:80/status

这确实做到了:

curl -v -H "Content-Type: application/json" -H "origin: *" localhost:80/status

GitHub页面上的答案: https://github.com/adamchainz/django-cors-headers/issues/438