django - 在 Django 中根据端点设置不同的 CORS 规则
问题描述
我试图找出一种方法来根据后端端点前端会命中不同的 CORS 规则。
所以我可以拥有
具有 CORS 域白名单的 /api 端点和
/public-api 没有 CORS 域白名单。
这是必需的,因为我有两个用于我自己的前端的内部端点,以及一个可以安装在任何第 3 方域中的公共 JS 小部件。
我看过django-cors-headers
图书馆,但它是正则表达式配置
CORS_ORIGIN_REGEX_WHITELIST = []
可以让来自域列表的请求通过。
就我而言,我需要一种方法来使用正则表达式(或其他方法)来让对我的端点的请求通过或不通过。
解决方案
django-cors-headers允许您指定一个自定义处理程序函数,该函数将检查是否应允许请求。在你的情况下,你可以使用这样的东西:
# 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
推荐阅读
- javascript - 如何使用 JavaScript 将循环内的数组中的所有项目相乘
- python - Pandas - 用多索引划分形状不均匀的df
- python - Multiple Column + Conditional Joins
- ios - “Firebase.xcconfig”的文件参考是多个组(“支持文件”和“支持文件”)的成员;这表明一个格式错误的项目
- qt - 如何在自定义 QMenu 中触发快捷方式?
- excel - 如何将具有多个值(分隔)的单元格列分隔为新列并添加标题
- java - 无法通过 Microsoft Graph Rest API 在 Onedrive 上创建文件
- networking - 确定 TCP 连接是否可以保持 30 分钟而没有从其对等方接收到任何内容
- powershell - Windows cmd.exe批处理文件的bash“set -o errexit”等效?
- spring - 同一资源上多个 Post 操作的 Rest URI 设计