python - Django / React Cross-Origin Request Blocked Error 托管 Google App Engine django-cors-headers 不工作
问题描述
应用程序后端 (django) 和前端 (react) 托管在同一应用程序的谷歌云上。我已经安装了 django-cors-headers 并在 settings.py 中引用了它:
INSTALLED_APPS = (
...
'corsheaders',
...
)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_REGEX_WHITELIST = (
'http://localhost:3000',
'https?\://myapp\.appspot\.com\/?',
'https?\://frontend-dot-myapp\.appspot\.com\/?',
)
据我了解 CORS_ORIGIN_ALLOW_ALL 应该已经解决了这个问题,但事实并非如此,我只是在尝试一些事情时有点绝望。CORS_ORIGIN_WHITELIST 对我来说效果不佳,这就是 CORS_ORIGIN_REGEX_WHITELIST 的原因。
我没有更改此设置中的任何内容,但现在出现了 Cross-Origin 错误。自上次代码更改以来,我安装了 django-silk 来分析应用程序。删除它似乎无法解决问题,所以我不确定它是否相关。
非常感谢帮助!
在 requirements.txt 中:
django-cors-headers==3.2.1
编辑
经过大量试验和错误后,我发现在 urls.py 中添加最后两行会导致问题:
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', views.api_root),
path('_ah/warmup/', views.service_status),
path('_ah/start/', views.service_status),
...
但是我不明白为什么会导致 CORS 错误或如何解决它。
解决方案
我在项目解决方案中也遇到了同样的问题,我得到的是
将 corsheaders.middleware.CorsMiddleware 放在顶部
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', ]
ALLOWED_HOSTS = ['*']
在 settings.py 底部添加
CORS_ORIGIN_ALLOW_ALL = True
推荐阅读
- r - 边缘权重问题:ggnet2 中的网络
- java - Spring手动注册?
- python - pybind11 以某种方式减慢了 c++ 函数
- mongodb - 在 BSON 中解码,这是一个由私有结构实现的接口
- mysql - 计算按国家和日期细分的每个项目的总收入
- javascript - 使用 Gatsby 和 allImageSharp 上下文定位特定文件夹
- c# - C# 两个不同数据库的简单减法
- python - 在运行时获取闭包
- mysql - MySQL;在一个请求中获取与每张卡片相关的所有卡片和所有卡片组
- xamarin - 是否有 API 端点可以通过 REST API(在 C# 中)与 Sharepoint 中的其他用户在线和本地共享元素(文件、项目、站点等)?