CORS 跨域
v1.3.5 起 fun 内建 CORS 白名单:f.CORS(origins...) 一行配置,/cell 与全部自定义路由统一生效。
用法
go
f := fun.GetFun()
f.CORS("https://a.com", "https://b.com") // Start 前调用,可变参数白名单
go f.Start(8080)行为细节
按需放行:请求
Origin命中白名单(大小写不敏感)才回显该来源,并允许携带凭据:Access-Control-Allow-Origin: https://a.com Access-Control-Allow-Credentials: true未命中不附加任何 CORS 头,交给浏览器自然拦截——不暴露可放行的来源集合。
预检直答:OPTIONS +
Access-Control-Request-Method的预检请求由框架直接以 204 应答,不进入业务处理;请求头按Access-Control-Request-Headers回显,预检结果缓存 24 小时。覆盖面:
/cell、精确自定义路由、通配路由统一生效。零配置零影响:未调用
CORS则不附加任何跨域头,行为与之前完全一致。
何时需要
| 场景 | 方案 |
|---|---|
开发期 vite 代理(/api → 后端) | 不需要 CORS(同源) |
| 浏览器直连后端域名 | f.CORS(frontendOrigin) |
| 网关 / 反向代理统一处理跨域 | 网关层做,框架不配置 |
开发期首选代理
同源代理(快速开始 · 前端联调)不需要 Cookie 的 SameSite 配合,state 传 token 也更简单。CORS 白名单主要用于生产环境浏览器直连。