SPa*_*ick 15 python django google-chrome django-rest-framework django-cors-headers
我在同一个问题上研究并阅读了不少Stackoverflow帖子.没有人解决我的问题.
我的问题是我的控制台中出现了"... No'Access-Control-Allow-Origin'标头出现在所请求的资源上......"错误.
我在用:
Chrome版本57.0.2987.133 Firefox版本52.0.2
Python 2.7 Django 1.11a1
AngularJS
我正在使用MAMP来提供我的前端Angular内容,以及用于后端内容的django服务器.
在我的django设置中,我已经包含了cors中间件,并尝试了白名单方法并将所有设置为true:
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 = True
Run Code Online (Sandbox Code Playgroud)
在谷歌浏览器上我仍然收到此错误:
localhost /:1 XMLHttpRequest无法加载{my endpoint url}.已从{my endpoint url}重定向到{my endpoint url with a}已被CORS策略阻止:请求的资源上没有"Access-Control-Allow-Origin"标头.因此,不允许原始{request url}访问.
它适用于Firefox,我无法弄清楚为什么它不适用于谷歌浏览器.我还没有尝试过任何其他类型的浏览器.非常感谢任何帮助,谢谢.
小智 35
安装cors-headers包
pip install django-cors-headers
Run Code Online (Sandbox Code Playgroud)
添加到已安装的应用中
INSTALLED_APPS = [
...
'corsheaders',
...
]
Run Code Online (Sandbox Code Playgroud)
添加MIDDLEWARE时 记得添加为列表中的第一个
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
Run Code Online (Sandbox Code Playgroud)
在安装的应用程序之前,此配置可供任何人访问
CORS_ORIGIN_ALLOW_ALL=True
Run Code Online (Sandbox Code Playgroud)
或者创建一个命中列表
CORS_ORIGIN_WHITELIST = [
'google.com',
'hostname.example.com',
'localhost:8000',
'127.0.0.1:9000'
]
Run Code Online (Sandbox Code Playgroud)
小智 12
首先检查您的请求网址。使用vue-resource时出现此问题,然后发现我在结尾或网址中缺少'/'。
确保使用127.0.0.1NOTlocalhost因为在使用localhost浏览器时可能会查找 IPv6 地址...或localhost明确设置为127.0.0.1at/etc/hosts
小智 2
也许您需要看看如何调用中间件。如果它们的顺序不正确,它们可能会抛出此错误。看来您的'django.middleware.security.SecurityMiddleware'需求被推到了以下'corsheaders.middleware.CorsMiddleware'。另外,看起来您可能
CORS_ALLOW_CREDENTIALS = True还需要添加代码。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
20292 次 |
| 最近记录: |