首頁 > 後端開發 > Golang > 如何在 Go 中有效處理預檢 CORS 請求?

如何在 Go 中有效處理預檢 CORS 請求?

Barbara Streisand
發布: 2024-12-25 01:48:17
原創
212 人瀏覽過

How to Efficiently Handle Preflight CORS Requests in Go?

在Go 中處理預檢CORS 請求

在開發跨站HTTP 請求時,你可能會遇到預檢OPTIONS 請求來檢查請求的安全性。在 Go 上下文中,正確處理這些請求至關重要。

一種基本方法是檢查處理函數中的請求方法:

func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
  switch r.Method {
  case "OPTIONS":
    // handle preflight
  case "PUT":
    // respond to actual request
  }
}
登入後複製

另一種選擇是利用Gorilla 的mux 包,註冊一個相關URL 路徑的預檢“OPTIONS”處理程序:

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
登入後複製

但是,為了更優雅的方法,請考慮包裝您的REST處理程序:

func corsHandler(h http.Handler) http.HandlerFunc {
  return func(w http.ResponseWriter, r *http.Request) {
    if (r.Method == "OPTIONS") {
      //handle preflight in here
    } else {
      h.ServeHTTP(w,r)
    }
  }
}
登入後複製

然後您可以像這樣包裝處理程序:

http.Handle("/endpoint/", corsHandler(restHandler))
登入後複製

透過分離邏輯並重新使用CORS 處理程序,您可以簡化程式碼並增強其功能可維護性。

以上是如何在 Go 中有效處理預檢 CORS 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板