惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
B
Blog
腾讯CDC
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
L
LangChain Blog
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog

See you soon

哟,好久不见,无线打印 | See you soon 试试将文章版本化管理吧 | See you soon 使用 Quadlet 将 Podman 中的 Postgres 当作 systemd 服务运行 | See you soon 大他者,那个无时无刻都在盯着你的东西 | See you soon Laws of Software Engineering,软件工程定律 | See you soon 浅记多因素身份认证 | See you soon Linux 内核中的度量单位 | See you soon 重置 GPG 智能密钥 | See you soon 向 NAS 引入 samba | See you soon 无法重复键入的 Fcitx5 | See you soon ZFS 降级事故 | See you soon 记被 XanMod Kernel 和 AppArmor 联合坑的一次踩坑 | See you soon agent 的 skill 与 toolcall | See you soon 记一次服务器被挂恶意挖矿二进制 | See you soon 活着的 Arc | See you soon 令 acme.sh 使用 Cloudflare 的 DNS API 签发与续签证书 | See you soon 于 Tokio 中卸载 CPU Bound 任务 | See you soon 如我所见,梦破碎的时候 | See you soon 74LS 家族手册 | See you soon JDK Projects 备忘录 | See you soon 关于历史 | See you soon 用 curl 下载 OnePlus 的 ROM | See you soon 实用命令切片 | See you soon 再见,Oh My Zsh。 | See you soon 你不应该复用 strings.Builder | See you soon 博客的明日 | See you soon 被 AppArmor 击杀的 Dockge | See you soon AI 时代的自我 | See you soon 支持删除的布隆过滤器 | See you soon 基于栈的虚拟机与基于寄存器的虚拟机 | See you soon
简单地使用 Caddy 实现 CORS 配置 | See you soon
Krysztal Huang · 2025-04-27 · via See you soon

其实可以在后端实现 CORS 配置,但是在后端实现 CORS 不算是很方便管理。既然已经使用了 Caddy,那为什么不利用强大的 Caddy 实现 CORS 配置?

查阅文档发现 Caddy 本身不支持直接写 CORS 的配置,但是 CORS 基本上是使用 HTTP Header 来实现的1,所以我们应该只需要写对应的 HTTP Header 就行了:

:80{

header {

Access-Control-Allow-Origin *

Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE"

Access-Control-Allow-Headers "Content-Type"

}

...

}

然后我发现了个更奇妙的写法:Caddy 有 snippet2,利用 snippet 一样可以做到这样的效果并且可移植性更好(大概?)

下面这段粘贴复制出去就可以用了,非常方便

(cors) {

@cors_preflight method OPTIONS

@cors header Origin {args.0}

handle @cors_preflight {

header Access-Control-Allow-Origin "{args.0}"

header Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE"

header Access-Control-Allow-Headers "Content-Type"

header Access-Control-Max-Age "3600"

respond "" 204

}

handle @cors {

header Access-Control-Allow-Origin "{args.0}"

header Access-Control-Expose-Headers "Link"

}

}

然后在站点配置里如下引用:

:80 {

import cors *

handle_path /* {

reverse_proxy localhost:8080

}

}

  1. MDN

  2. Caddy snippet