从已部署的 django 项目向 django Restframework 发出请求

问题描述 投票:0回答:1

我有一个使用 django 和 drf 以及 jquery 的 ajax 创建的项目,用于向我的 django 服务器 URL 发送 post 和 get 请求。但是当我在铁路上部署该项目时遇到了问题。如果我在本地主机或 127.0.0.1:8000 上运行我的项目,它工作得很好,但是当我在部署后尝试向服务器发出请求时,它会失败,并在浏览器开发面板上显示 CORs 错误。我尝试将我的域添加到 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({ 网址:

https://my-domain.com/api/blogview
, 类型:“获取”, 数据类型:“json”,

我在我的settings.py 文件中尝试了这些代码,但没有任何进展。这就是我发出 ajax 请求的方式。我还尝试订购 drf 端点,但在浏览器开发面板上仍然遇到相同的错误。这些是我运行以下命令来模拟非本地服务器时遇到的错误。

----->管理.py运行服务器192.168.86.34:9000

我收到此错误。

Cross-Origin-Opener-Policy 标头已被忽略,因为 URL 的来源不可信。它是在最终响应或重定向中定义的。请使用 HTTPS 协议传送响应。您也可以使用“localhost”源。请参阅https://www.w3.org

python django ajax django-rest-framework django-cors-headers
1个回答
0
投票

尝试使用 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",
]
© www.soinside.com 2019 - 2024. All rights reserved.