vault backup: 2026-04-28 08:53:28
This commit is contained in:
@@ -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]] — 中间件链底层执行机制
|
||||
|
||||
Reference in New Issue
Block a user