在Django中根据端点设置不同的CORS规则

2024-01-17

我正在尝试找出一种方法,根据后端端点前端的命中情况来制定不同的 CORS 规则。

所以我可以拥有

/api 端点具有 CORS 域白名单和

/public-api 没有 CORS 域白名单。

这是必需的,因为我有两个用于自己前端的内部端点,以及一个可以安装在任何第三方域中的公共 JS 小部件。

我看过django-cors-headers https://pypi.org/project/django-cors-headers/库,但它是正则表达式配置

CORS_ORIGIN_REGEX_WHITELIST = []

致力于让来自域列表的请求通过。

就我而言,我需要一种方法来使用正则表达式(或其他方法)来让对我的端点的请求通过或不通过。


django-cors-标题允许您指定一个自定义处理程序函数来检查是否应允许该请求。在你的情况下,你可以使用这样的东西:

# myapp/handlers.py
from corsheaders.signals import check_request_enabled

def cors_allow_particular_urls(sender, request, **kwargs):
    return request.path.startswith('/public-api/')

check_request_enabled.connect(cors_allow_mysites)

handlers.py需要在应用程序配置中加载:

# myapp/__init__.py

default_app_config = 'myapp.apps.MyAppConfig'
# myapp/apps.py

from django.apps import AppConfig

class MyAppConfig(AppConfig):
    name = 'myapp'

    def ready(self):
        # Makes sure all signal handlers are connected
        from myapp import handlers  # noqa

更多信息请点击这里:https://github.com/adamchainz/django-cors-headers#signals https://github.com/adamchainz/django-cors-headers#signals

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Django中根据端点设置不同的CORS规则 的相关文章

随机推荐

  • 如何使android应用程序作为服务器和python作为客户端

    描述 所以基本上我正在构建一个android应用程序 其中我使用kotlin 它将充当服务器 而在客户端 我使用python 我为此目的使用套接字 我必须使用UDP进行通信 但我无法连接到我的 android 应用程序 在 python 脚
  • 在 Nuxt 3 和 Vite 中集成 bootstrap 5

    我正在尝试将 Bootstrap 5 集成到新的 Nuxt 3 项目中 但我遇到了一个无法解决的问题 我想通过仅导入必要的模块 scss 和 javascript 来优化它 如下所述 https getbootstrap com docs
  • 尝试从 ASP.NET Web Api 控制器返回 IEnumerable

    我试图从我的 ASP NET Web Api 控制器返回 IEnumerable 我的 ApiController 中有以下内容 public IEnumerable
  • 单击时切换按钮的颜色(并恢复其他按钮的颜色)

    我有三个按钮 并且想在选择按钮时更改按钮的颜色 正如您将看到的 我可以更改选择的颜色 但是当选择按钮 B 时 我需要按钮 A 返回其原始颜色 此时按钮 B 应该采用所选颜色 依此类推 目前 每个选定的按钮都采用选定的颜色 但按钮不会返回到其
  • 在页面上包含两个版本的 jQuery,而不影响旧插件

    我们的 drupal 站点使用 jQuery 版本 1 2 1 运行 我们尚未升级该版本 问题是这样的 我们需要添加一个名为 jQuery Tokeninput 的新插件 但它仅适用于最新的 jQuery 版本 我们尝试将最新的 jQuer
  • git rebase master 功能会产生(重命名/删除)冲突,而 git rebase -i master 功能则不会

    我在使用 git 时遇到了一种奇怪的情况 其中我有一个功能分支修改了一些文件并删除了一个文件 foo js 当我通过 git rebase master feature 重新基于master时 我遇到了以下类型的冲突 CONFLICT re
  • 自定义圆形按钮

    我想创建自定义按钮 并且需要它是圆形的 如何创建圆形按钮 我认为使用draw9patch 不可能做到这一点 我也不知道如何制作自定义按钮 您有什么建议吗 像这样使用 xml 绘图 将以下内容另存为round button xml in dr
  • 衡量(和改进)PHP 性能的最佳方法?

    我正在使用的一个网站开始变得有点迟缓 我想改进它 我认为问题出在 PHP 上 但我不能确定 我如何查看函数执行需要多长时间 如果你想测试执行时间
  • 如何对浮点数进行舍入到偶数

    对于 IEEE 754 单精度浮点 如何执行舍入到最近的操作 其中舍入到所需位置中最接近的偶数位 默认且迄今为止最常见的模式 基本上我有防护钻头 圆形钻头和粘性钻头 因此 如果我们将它们形成一个向量并将其称为 GRS 则适用以下规则 If
  • 如何通过点击推送通知来知道应用程序是否已启动

    我想知道是否有一个标志和参数可以告诉我用户是否通过单击通知托盘中的推送通知来启动活动 应用程序 我在 C2DMReceiver java 中的代码 Context context getApplicationContext PackageM
  • 作为另一个向量的函数的参数值。解算

    我正在建立一个人口动态模型 其中每个参数值对应于当天的温度 例如 简单模型 library deSolve set seed 1 pars lt c alpha 1 beta 0 2 delta 0 5 gamma 0 2 lv model
  • 通过请求头发送数据与通过请求体发送数据

    通过请求头发送数据和通过请求体发送数据有什么区别 什么情况下我们必须通过 header body 发送数据 什么时候不应该通过 header body 发送数据 通常最好将标头用于元数据 将正文用于业务逻辑所使用的数据 需要考虑的一些要点
  • 基于CheckBox值显示WIX对话框

    我已经安装了 我必须根据复选框值显示对话框 我最初已将复选框属性设置为 true
  • 来自另一个 ini 部分的引用变量

    是否可以从另一个部分引用 ini 中的变量 我知道你可以执行以下操作 env dir home a dir2 dir s b 但是 如果我有两个部分并且想要引用该部分中的变量 会发生什么情况 env name DEV dir home ho
  • Linux Pthread 参数

    这是我的代码 这很简单 include
  • C# 的浮点比较函数

    有人可以指出 或展示 C 中一些好的通用浮点比较函数来比较浮点值吗 我想实现以下功能IsEqual IsGreater an IsLess 我也只关心双打而不是浮点数 编写有用的通用浮点IsEqual即使不是完全不可能 也是非常非常困难的
  • 如何在Windows 8.1下在Matlab 2014b中安装SPAMS工具箱

    我正在尝试学习如何在使用 Windows 8 1 操作系统和 MATLAB R2014b 的计算机中成功编译 稀疏建模软件 SPAMS 我采取的步骤如下 某些部分可能是不必要的或丢失的 Step 1 安装 Microsoft Visual
  • Java 不重复的随机数[重复]

    这个问题在这里已经有答案了 我需要在 6 个不同的编辑文本中生成随机数 不幸的是随机数重复 我需要我设置的范围内的唯一数字 rndNumber rndNumbers nextInt max num1 setText Integer toSt
  • 高阶函数渲染两次导致子组件被触发

    我有一个受保护的路由 使用高阶组件实现 但是在我的子组件 App js 中 触发其 componentDidMount 方法 我想知道为什么会这样 Route js
  • 在Django中根据端点设置不同的CORS规则

    我正在尝试找出一种方法 根据后端端点前端的命中情况来制定不同的 CORS 规则 所以我可以拥有 api 端点具有 CORS 域白名单和 public api 没有 CORS 域白名单 这是必需的 因为我有两个用于自己前端的内部端点 以及一个