配置 django-cors-headers 不起作用

配置 django-cors-headers 不起作用,第1张

配置 django-cors-headers 不起作用 可能的错误原因
  1. 检查app配置,是否加入了 corsheaders
INSTALLED_APPS = [
    ...,
    "corsheaders",
    ...,
]
  1. 检查中间件顺序,至少应当放在CommonMiddleware之前(中间件按照先后顺序判定,可以尽可能往高放)
MIDDLEWARE = [
    ...,
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
    ...,
]
  1. 版本错误(最可能的情况)
做如下 *** 作

1.在settings.py中,找到CORS_ORIGIN_ALLOW_ALL = True
2.将CORS_ORIGIN_ALLOW_ALL 改为 CORS_ALLOW_ALL_ORIGINS
原因

本人使用django-cors-headers 3.11.0 版本
以下为pycharm界面,pip list 也可以看。

由django-cors-headers库官方文档可知

之前的这个设置叫做 CORS_ORIGIN_ALLOW_ALL,现另作他用,新名称优先。
如果按照旧版本进行配置,将导致配置不成功,也不会出现报错,难以排查。

一劳永逸?

大部分时候,我们不希望所有的请求源都能够访问后台数据。
更好的做法是:配置白名单!
将CORS_ALLOW_ALL_ORIGINS = bool 配置项,改为如下代码

CORS_ALLOWED_ORIGINS = [
    "https://example.com",
    "https://sub.example.com",
    "http://localhost:8080",
    "http://127.0.0.1:9000",
]

同样的它也改了名字。以前叫CORS_ORIGIN_WHITELIST

如果存在大量的请求源需要配置,你不会喜欢将他们一条一条打出来的。

当然,此配置支持正则匹配。此前称为CORS_ORIGIN_REGEX_WHITELIST

现在要这样写

CORS_ALLOWED_ORIGIN_REGEXES = [
    r"^https://\w+\.example\.com$",
]
一点废话

以上是本人的第一篇博客,若有谬误,望各位同学不吝赐教。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/725025.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存