ホームページ > バックエンド開発 > Golang > Go でプリフライト CORS リクエストをエレガントに処理する方法

Go でプリフライト CORS リクエストをエレガントに処理する方法

Patricia Arquette
リリース: 2025-01-03 08:51:40
オリジナル
232 人が閲覧しました

How to Elegantly Handle Preflight CORS Requests in Go?

Go でのプリフライト CORS リクエストの処理

Go サーバーからクロスサイト HTTP リクエストを処理する場合、ユーザー エージェントはプリフライト OPTIONS リクエストを送信することがあります。リクエストの安全性を確認するため。この記事では、これらのプリフライト リクエストをエレガントに処理して応答するためのベスト プラクティスについて説明します。

従来、net/http パッケージを使用して、ハンドラー関数でリクエスト メソッドを確認できました。

func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
  switch r.Method {
  case "OPTIONS":
    // handle preflight
  case "PUT":
    // respond to actual request
  }
}
ログイン後にコピー

あるいは、Gorilla の mux パッケージを使用すると、URL ごとに個別のプリフライト ハンドラーを登録できます。 path:

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
ログイン後にコピー

このプロセスを簡素化するには、プリフライト リクエストを処理する CORS ハンドラーで REST ハンドラーをラップすることを検討してください。たとえば、net/http の Handle メソッドを使用します。

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))
ログイン後にコピー

REST ハンドラーをラップすることで、ロジックを分離し、関連するすべてのリクエストに対応する CORS ハンドラーにより、よりエレガントで保守しやすいソリューションが提供されます。

以上がGo でプリフライト CORS リクエストをエレガントに処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート