vault backup: 2026-04-28 08:53:28

This commit is contained in:
2026-04-28 08:53:28 +08:00
parent 2df3748fc9
commit 8b07798991
23 changed files with 3349 additions and 39 deletions
@@ -54,16 +54,7 @@ v3 := r.Group("/api/v3") // ← 分组注册下很容易忘记加 cors()
**3. OPTIONS 预检拦截天然正确**
CORS 的核心逻辑是在最外层处理 `OPTIONS` 预检请求:
```mermaid
flowchart LR
OPTIONS["OPTIONS 预检请求"] --> CORS["全局 CORS 中间件<br/>c.AbortWithStatus(204)"]
OPTIONS --> SKIP["不进入后续中间件和 handler"]
style CORS fill:#90EE90
style SKIP fill:#FFB6C1
```
CORS 的核心逻辑是在最外层处理 `OPTIONS` 预检请求——预检触发条件、两轮对话机制、Header 语义详见 [[BACKEND/GIN/3-middleware/cors-registration-scope/cors-preflight|cors-preflight]]。
放在全局中间件中,预检请求在最早阶段被拦截,不会消耗后续中间件的算力。
@@ -96,6 +87,7 @@ v2 := r.Group("/api/v2", corsStrict([]string{"https://app.example.com"}))
## 关联笔记
- [[GIN/3-middleware/cors-preflight]] — OPTIONS 预检请求完整机制(触发条件、两轮对话、Max-Age 缓存)
- [[GIN/3-middleware]] — 中间件三级作用域机制
- [[GIN/3-middleware-abort]] — `c.Abort()` 终止机制
- [[middleware-abort]] — `c.Abort()` 终止机制
- [[GIN/gin-architecture]] — 中间件链底层执行机制