我有一个使用 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
尝试使用 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",
]