gpt4 book ai didi

python - Django 休息框架 : XMLHttpRequest cannot load http://127. 0.0.1:8000/xyz/api/abc

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:38 30 4
gpt4 key购买 nike

解决方案:在 url 的末尾添加一个尾部斜杠...

http://127.0.0.1:8000/xyz/api/abc/”代替“http://127.0.0.1:8000/xyz/api/abc

....

我已经成功创建了一个 Django Rest API,并且似乎能够在本地存储和托管数据。我已经单独构建了一个 angularjs1.0 应用程序,并试图通过 $http get 请求提取数据但是我遇到了这个错误:

XMLHttpRequest cannot load http://127.0.0.1:8000/xyz/api/abc. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://172.20.9.163:8080' is therefore not allowed access.

我已尝试安装 CORS 并将其添加到我的 INSTALLED_APPS,但似乎还没有任何效果。

这是获取请求:

getABC : function() {
$http({
method: 'GET',
url: 'http://127.0.0.1:8000/xyz/api/abc',
cache: false
}).success(function(data) {
console.log(data)
callback(data);
});
},

下面是我的 Django settings.py 文件:

INSTALLED_APPS = (
'xyz',
'corsheaders',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
)

MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'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',

)

CORS_ORIGIN_ALLOW_ALL = True

最佳答案

长话短说

将您的 AJAX 请求发送到附加斜线的 URL。

解释

经过我们的讨论,罪魁祸首似乎是 Django 的自动 APPEND_SLASH = True,它在启用 CommonMiddleware 时启用。

这会导致来自 Angular 应用程序的 AJAX 请求首先命中 301 Moved Permanently 重定向到附加斜线的 URL。但是,corsheaders 中间件不会对此响应采取行动,因此浏览器会提示缺少 Access-Control-Allow-Origin header 。

这可以通过直接请求斜杠附加 URL 并完全绕过 301 重定向来解决。

$http({
method: 'GET',
url: 'http://127.0.0.1:8000/xyz/api/abc/', // trailing slash here
cache: false
}).success(...);

关于python - Django 休息框架 : XMLHttpRequest cannot load http://127. 0.0.1:8000/xyz/api/abc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375797/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com