提问人:Victor Okoye 提问时间:11/10/2023 更新时间:11/10/2023 访问量:22
从已部署的 django 项目向 django restframework 发出请求
Making Request to django restframework from a deployed django project
问:
我有一个使用 django 和 drf 以及 jquery 的 ajax 创建的项目,用于向我的 django 服务器 url 发送 post 和 get 请求。但是当我在铁路上部署项目时,我遇到了一个问题。如果我在我的本地主机或 127.0.0.1:8000 上运行我的项目,它工作得很好,但是当我在部署后尝试向我的服务器发出请求时,它失败了,并在我的浏览器开发面板上显示 COR 错误。我尝试将我的域添加到 settings.py 文件中的CORS_ALLOWED_ORIGINS,但这并不能解决问题。我还添加了我的域名CORS_ORIGIN_WHITELIST但仍然没有进展。请问我如何解决这个错误。
#settings.py CORS_ALLOWED_ORIGINS = [ 'http://localhost:3000', 'http://127.0.0.1:3000', 'https://my-domain.com', ]
CORS_ORIGIN_WHITELIST = [ 'http://localhost:3000', 'https://my-domain.com', ]
ALLOWED_HOSTS = ['*']
CSRF_TRUSTED_ORIGINS = ['https://my-domain.com', 'http://127.0.0.1']
#main.js
$.ajax({
网址: ,
类型: “GET”,
数据类型:“json”,https://my-domain.com/api/blogview
我在 settings.py 文件中尝试了这些代码,但没有进展。这就是我提出ajax请求的方式。我也尝试订购 drf 端点,但我仍然在浏览器开发面板上收到相同的错误。这些是我在运行以下命令来模拟非本地服务器时遇到的错误。
-----> manage.py 运行服务器 192.168.86.34:9000
我收到这个错误。
Cross-Origin-Opener-Policy 标头已被忽略,因为 URL 的来源不可信。它是在最终响应或重定向中定义的。请使用 HTTPS 协议传递响应。您也可以改用“localhost”源。查看 https://www.w3.org
答:
尝试使用django_cors_headers包。
安装
python -m pip install django-cors-headers
在添加到已安装的应用程序settings.py
INSTALLED_APPS = [
...,
"corsheaders",
...,
]
同样在中间件中(注意:这里的顺序很重要。把它放在 CommonMiddleware 之前):
MIDDLEWARE = [
...,
"corsheaders.middleware.CorsMiddleware",
"django.middleware.common.CommonMiddleware",
...,
]
之后,按照本例所示放置 CORS 设置
CORS_ALLOWED_ORIGINS = [
"https://example.com",
"https://sub.example.com",
"http://localhost:8080",
"http://127.0.0.1:9000",
]
评论