ホームページ >バックエンド開発 >Golang >Go でプリフライト CORS リクエストを効率的に処理するにはどうすればよいですか?

Go でプリフライト CORS リクエストを効率的に処理するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 01:48:17214ブラウズ

How to Efficiently Handle Preflight CORS Requests in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。