尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何配置 blackd 的 --cors-allow-origin 允许浏览器跨域请求
如何配置 blackd 的 --cors-allow-origin 允许浏览器跨域请求【免费下载链接】blackThe uncompromising Python code formatter项目地址: https://gitcode.com/GitHub_Trending/bl/black如果你在浏览器侧写了客户端网页或浏览器内工具通过 fetch 调用 blackd 的 HTTP 接口来格式化 Python 代码会碰到一个默认行为blackd 默认拒绝跨域的浏览器请求——任何携带Origin请求头且未在白名单中的请求都会被返回 HTTP 403浏览器端表现为跨域失败。解决方法是在启动 blackd 时传入一个或多个--cors-allow-origin参数放行指定的来源。本文按安装、观察默认拒绝行为、配置白名单、验证预检与真实请求的顺序完成这个任务。安装 blackdblackd 没有随 black 一起打包因为它有额外依赖需要通过[d]extra 安装pip install black[d]官方文档明确警告blackd 不应作为公开可访问的服务运行没有任何防止滥用的安全措施仅限本地使用。安装后运行blackd --help可以查看全部命令行参数blackd 提供的选项比 black 本身更少。默认行为白名单外的 Origin 会被 403 拒绝blackd 只在/路径接受POST请求。请求的 CORS 处理逻辑在中间件 src/blackd/middlewares.py 中请求没有Origin头例如直接用 curl 调用不受 CORS 检查影响直接处理Origin不在允许列表中返回 HTTP 403响应体为CORS origin is not allowed且响应中没有任何Access-Control-Allow-Origin等 CORS 头。先启动一个未配置任何 origin 的 blackd 来验证这个默认行为。以下端口沿用官方文档的测试示例9090不加参数时默认绑定 localhost、端口 45484见 src/blackd/init.pyblackd --bind-port 9090 curl -si -XPOST localhost:9090 -d print(valid) -H Origin: https://example.com预期得到 403响应体为CORS origin is not allowed且响应头中没有Access-Control-Allow-Origin。项目测试 tests/test_blackd.py 中的test_cors_requests_rejected_by_default断言的正是这一结果。用 --cors-allow-origin 放行指定来源--cors-allow-origin参数定义在 src/blackd/init.py帮助文本为 Origin allowed to access blackd over CORS. Can be passed multiple times.——可以多次传入每传入一次放行一个来源blackd --bind-port 9090 --cors-allow-origin https://example.comhttps://example.com是项目测试中使用的示例值你需要把它替换为实际调用 blackd 的网页的 Origin协议 主机 端口即浏览器发出的Origin头的值。需要放行多个来源时再追加参数并同样传入对应的 Origin 值。验证配置生效带参数重启 blackd 后分两步验证。预检preflight请求浏览器对携带自定义请求头的跨域 POST 会先发出 OPTIONS 预检。tests/test_blackd.py 中test_cors_preflight配置了 origin 的测试用例给出的请求头如下等价命令curl -si -X OPTIONS localhost:9090 \ -H Origin: https://example.com \ -H Access-Control-Request-Method: POST \ -H Access-Control-Request-Headers: Content-Type该测试断言的结果即预期结果响应状态为 200Access-Control-Allow-Origin的值就是被放行的 originAccess-Control-Allow-Headers与Access-Control-Allow-Methods均存在。其中Allow-Headers的内容是 blackd 支持的全部X-*请求头加上Content-TypeAllow-Methods为OPTIONS, POST见 src/blackd/middlewares.py。真实 POST 请求curl -si -XPOST localhost:9090 -d print(valid) -H Origin: https://example.com响应会带有Access-Control-Allow-Origin: https://example.com并且Access-Control-Expose-Headers中包含X-Black-Version也就是浏览器端 JS 可以读取响应头中的 black 版本号。状态码含义按官方协议说明200输入需要格式化响应体为格式化后的代码204输入已符合格式响应体为空上面的print(valid)属于这种情况400输入存在语法错误细节在响应体中返回。而用白名单之外的 Origin 发送同样的请求仍然返回 403——白名单只放行你显式传入的 origin。使用限制blackd 仅限本地使用文档明确警告不要把它当作公开服务运行只接受/路径上的POST预检放行的方法固定为OPTIONS, POST请求体默认限制 5 MiB需要传输更长代码时用--max-body-size调整该上限origin 匹配是中间件对Origin头做的精确匹配见 src/blackd/middlewares.py文档未提供通配符等模糊匹配机制。【免费下载链接】blackThe uncompromising Python code formatter项目地址: https://gitcode.com/GitHub_Trending/bl/black创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

CPython 3.6.0a1 变更全解析:从 PEP 498 字符串插值到内存分配器调试体系

CPython 3.6.0a1 变更全解析:从 PEP 498 字符串插值到内存分配器调试体系

CPython 3.6.0a1 变更全解析:从 PEP 498 字符串插值到内存分配器调试体系 【免费下载链接】cpython The Python programming language 项目地址: https://gitcode.com/GitHub_Trending/cp/cpython 本文以 CPython 仓库 Misc/NEWS.d/3.6.0a1.rst(CP…

📅 2026/9/11 5:17:45
RabbitMQ高可用镜像队列实战:从集群搭建到生产故障恢复指南

RabbitMQ高可用镜像队列实战:从集群搭建到生产故障恢复指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/11 5:17:45
STM32F103 AB分区OTA从零复现:Bootloader设计与固件升级实战

STM32F103 AB分区OTA从零复现:Bootloader设计与固件升级实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/11 5:17:45
MORE NEWS

更多资讯

📰

WINCC+SQL Server+VBS实现配方导入与自动报表生成实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

深入解析 oh-my-pi 会话标题生成协议:`<title>` 标记指令的设计与实现

深入解析 oh-my-pi 会话标题生成协议&#xff1a;<title> 标记指令的设计与实现 【免费下载链接】oh-my-pi ⌥ Coding agent with the IDE wired in 项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi title-marker-instruction.md 是 oh-my-pi 编码代理…

📰

巴西节点GPU集群上线:南美智算布局与Windows本地模拟部署实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

子数组问题三连击:LeetCode 560、239、76 的前缀和、单调队列与双指针

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

awesome-design-md 完整拆解:一份 DESIGN.md 如何指挥 AI 生成品牌同款 UI

awesome-design-md 完整拆解&#xff1a;一份 DESIGN.md 如何指挥 AI 生成品牌同款 UI 【免费下载链接】awesome-design-md A collection of DESIGN.md files analysis by popular brand design systems. Drop one into your project and let coding agents generate a matchin…

📰

嵌入式Linux串口配置与Modbus RTU读写传感器实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬