在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中文網其他相關文章!