ホームページ >バックエンド開発 >Golang >Go の Jin フレームワークで CORS ミドルウェアを適切に構成するにはどうすればよいですか?

Go の Jin フレームワークで CORS ミドルウェアを適切に構成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 03:00:54219ブラウズ

How to Properly Configure CORS Middleware in Go's Gin Framework?

Go Jin フレームワーク: CORS (クロスオリジン リソース共有) の処理

Go の gin フレームワークでは、クロスオリジン リソース共有 (CORS) を設定すると、異なるオリジンからのクライアントが許可されます。リソースにアクセスします。ただし、OPTIONS リクエストを送信した後に空の応答が発生したユーザーの場合のように、CORS リクエストが予期した動作を返さないという問題が発生する可能性があります。

この問題を解決するには、ユーザーの提供されたミドルウェアを動作中のものと比較する例:

func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Writer.Header().Set("Content-Type", "application/json")
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Max-Age", "86400")
        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, X-Max")
        c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")

        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(200)
        } else {
            c.Next()
        }
    }
}
func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")

        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(204)
            return
        }

        c.Next()
    }
}

相違点:

  • 異常終了ステータス コード: 動作中のミドルウェアは、次のステータス コードで異常終了します。 OPTIONS リクエストの場合は 204 (コンテンツなし)、ユーザーのミドルウェアは次のエラーで中止されます。 200 (OK).
  • 許可されたメソッド: 動作中のミドルウェアは POST、OPTIONS、GET、および PUT メソッドのみを許可しますが、ユーザーのミドルウェアには DELETE および UPDATE が含まれます。

したがって、問題を解決するには、ユーザーは、特に次の方法でミドルウェアを更新して実際の例と一致させる必要があります。アボートステータスコードを修正し、許可されたメソッドを調整します。

以上がGo の Jin フレームワークで CORS ミドルウェアを適切に構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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