[golang ]在 Golang 中處理 CORS(跨來源資源共享, Cross-Origin Resource Sharing)
在 Golang 中處理 CORS(跨來源資源共享, Cross-Origin Resource Sharing),通常會用 Gin 或 net/http 來實現,這樣可以確保你的 API 可以被前端或其他服務安全地訪問。以下是幾種處理 CORS 的方式。
1. 使用 Gin 處理 CORS
如果你是用 Gin 框架,可以透過 github.com/gin-contrib/cors 這個套件來簡單設定 CORS 規則。
安裝 cors 套件
在 Gin 設定 CORS
這樣你的 API 就可以允許來自 http://localhost:3000 和 https://example.com 的請求!
2. 在 net/http 中手動處理 CORS
如果你是用標準的 net/http,可以自己寫一個 CORS 中介函式(middleware) 來手動控制允許的請求來源。
在 net/http 設定 CORS
💡 這樣就可以讓 http://localhost:3000 訪問你的 API!
3. CORS 預檢請求(OPTIONS)
當前端發送 跨域請求(例如 POST、PUT、攜帶 Authorization 的請求) 時,瀏覽器會先發送一個 OPTIONS 預檢請求,確認伺服器是否允許該請求。
如果 CORS 沒有正確設置,會出現類似:
你可以手動處理 OPTIONS:
這樣預檢請求會回應 200 OK,瀏覽器就能繼續發送真正的請求了。
4. 在 Nginx 處理 CORS(適用於反向代理)
如果你的 Go API 是透過 Nginx 代理,可以直接在 Nginx 設定 CORS:
這樣 所有跨域請求 都會被允許,適合 API 伺服器。
5. CORS 安全建議
- 不要使用
*作為Access-Control-Allow-Origin,應該明確設定允許的來源,避免安全風險。 - 允許
OPTIONS預檢請求,否則前端可能無法正常發送POST或PUT請求。 - 在
AllowCredentials設為true時,Allow-Origin不能是*,否則瀏覽器會拒絕請求。
留言
張貼留言