Go でのプリフライト CORS リクエストの処理
クロスサイト HTTP リクエストの開発では、リクエストの安全性をチェックするためにプリフライト OPTIONS リクエストが発生する場合があります。 Go コンテキストでは、これらのリクエストに適切に対処することが重要です。
基本的なアプローチの 1 つは、ハンドラー関数でリクエスト メソッドをチェックすることです。
func AddResourceHandler(rw http.ResponseWriter, r *http.Request) { switch r.Method { case "OPTIONS": // handle preflight case "PUT": // respond to actual request } }
もう 1 つのオプションは、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 中国語 Web サイトの他の関連記事を参照してください。