开发期间没有Access-Control-Allow-Origin

时间:2016-11-23 09:43:31

标签: django cors

服务器回答为生产设置了Access-Control-Allow-Origin值。当请求来自我的开发服务器时,有没有办法允许?是否有Django设置可以在DEBUG=True时禁用跨源检查?

我无法修改Access-Control-Allow-Origin。请求是使用jquery ajax函数完成的。

编辑:

我已使用pip install django-cors-headers安装了https://github.com/ottoyiu/django-cors-headers,在settings.py

中添加了以下内容
if DEBUG:
    INSTALLED_APPS += ('corsheaders', )

CORS_ORIGIN_ALLOW_ALL = DEBUG

并放置中间件:

MIDDLEWARE_CLASSES = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
...
}

但我仍然得到错误:

阻止跨源请求:同源策略禁止在_request_url_读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。)

如果我检查了响应标头,我就看不到任何Access-Control-Allow-Origin参数。

2 个答案:

答案 0 :(得分:6)

安装中间件:https://github.com/ottoyiu/django-cors-headers

在django settings.py中添加以下设置:

DEBUG=True

CORS_ORIGIN_ALLOW_ALL = DEBUG

(如果DEBUG为真Access-Control-Allow-Origin将被添加到回复标题中

答案 1 :(得分:1)

要将CORS标头添加到您的响应中,请将其安装到您的django项目中:

https://github.com/ottoyiu/django-cors-headers

由于您希望从本地连接,因此无法单独将特定主机列入白名单。

要仅在DEBUG=True时启用CORS,只有在Debug为True时才能为已安装的应用添加corsheaders:

if DEBUG is True:
     INSTALLED_APPS += ('corsheaders', )