Skip to content

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 白名单主要用于生产环境浏览器直连。

下一步

基于 MIT 许可发布