首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django中启用CORS (跨域请求)

在Django中启用CORS (跨域请求)
EN

Stack Overflow用户
提问于 2016-07-20 21:01:29
回答 3查看 18.7K关注 0票数 8

我正尝试在Django上运行的一个项目中使用带有JavaScript XMLHttpRequest的overpass API http://wiki.openstreetmap.org/wiki/Overpass_API,但我一直收到

代码语言:javascript
复制
 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.google.com/accounts/ClientLogin. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 

错误。无论我是使用get还是POST,以及从任何其他主机,而不仅仅是overpass API,我都会收到这个错误。

我已经安装了django-cors-headers https://github.com/ottoyiu/django-cors-headers并按照那里的说明操作,将'corsheaders‘放入INSTALLED_APPS,将’corsheaders.midleware.CorsMiddleware‘,’django.midleware.common.CommonMiddleware‘放入MIDDLEWARE_APPS,我已经设置了

代码语言:javascript
复制
CORS_ORIGIN_ALLOW_ALL = true 

在settings.py中,但似乎什么都不起作用。我在本地运行它

代码语言:javascript
复制
python manage.py runserver

但我也把它托管在openshift上。这两种方法都不起作用,它们都给出了上面的错误。

如果我遗漏了什么,请告诉我。

EN

回答 3

Stack Overflow用户

发布于 2016-10-22 00:13:56

当我试图从我的笔记本电脑(localhost)访问托管在Heroku上的Django Rest Framework应用程序接口时,也遇到了同样的问题。我使用的是Django 1.10.2DRF 3.4.7python v3.4

我执行了pip install django-cors-headers (版本1.2.2),并按照docs的说明进行了配置,然后,再次出现相同的错误:(

继续寻找几个小时,然后它击中了我!

我在没有卸载 django-cors-headers包的情况下执行了pip install django-cors-middleware (version 1.3.1) 。此外,我没有接触我的settings.py文件中的任何东西(它被配置为django-cors-headers设置,尽管这两个包没有太多区别-后者是第一个的分叉)。

点击refresh (从localhost),一切都运行得很好!

我现在可以通过jQuery's ajax方法从myapp.herokuapp.com获取数据了。

票数 10
EN

Stack Overflow用户

发布于 2020-02-10 22:01:24

记住把'corsheaders.middleware.CorsMiddleware‘放在列表的最前面,而且'django.middleware.common.CommonMiddleware’已经是一个标准的中间件了

代码语言:javascript
复制
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'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',
 ]
票数 4
EN

Stack Overflow用户

发布于 2020-02-13 21:41:12

CORS_ORIGIN_ALLOW_ALL = true

应该是:

CORS_ORIGIN_ALLOW_ALL =真

T大写字母为True。添加其他所需的中间件

代码语言:javascript
复制
MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware', ]

并将'corsheaders‘注册到INSTALLED_APPS。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38482059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档