django - cors 策略错误:对预检请求的响应未通过访问控制检查:没有'Access-Control-Allow-Origin
问题描述
我已经安装了 django-cors-headers,这是 settings.py :
ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS","").split()
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'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.RemoteUserMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
并且 :
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_CREDENTIALS = True
但我在 chrome consloe 中遇到了这个错误:
Access to XMLHttpRequest at 'https://event-alpha.mizbans.com/api/meetings/?memory=0' from origin 'https://alpha.mizbans.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
解决方案
我有一个类似的问题,都是关于 CORS_ALLOW_ALL_ORIGINS 的。事实证明,它不适用于其他东西(抱歉,不记得什么了,也许是身份验证)。所以我不得不添加特定的起源。这是我的整个设置:
# CORS SETUP
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = [
'http://localhost:4200',
'http://127.0.0.1:4200'
]
CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SAMESITE = 'None'
对我来说,它现在可以使用这种组合。
推荐阅读
- powershell-4.0 - Powershell使用itext.html2pdf将html文件转换为pdf
- python - 为什么requests不能得到我手动下载得到的同一个页面?
- python - 传递给 Gensim 语言模型的句子迭代器
- graphql - 为什么 TYPE_ADDED_TO_INTERFACE 被认为是一个重大变化?
- typescript - VS Code tsserver 问题匹配器覆盖来自自定义任务问题匹配器的错误
- python-3.x - 如何将硬编码的 youtube-dl 代码和 tkinter 变量传递到命令行
- javascript - 如何获取具有变化值的隐藏元素的文本内容
- angular - Angular 8 使用 HttpInterceptor 添加自定义请求标头
- excel - 在特定条件下在用户窗体中显示消息框
- .htaccess - 如何在不破坏层次结构的情况下重定向?