Heim >Backend-Entwicklung >Golang >Wie konfiguriere ich die CORS-Middleware in Go Gin richtig, um OPTIONS-Anfragen zu verarbeiten?

Wie konfiguriere ich die CORS-Middleware in Go Gin richtig, um OPTIONS-Anfragen zu verarbeiten?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 03:10:09464Durchsuche

How to Properly Configure CORS Middleware in Go Gin to Handle OPTIONS Requests?

CORS im Go Gin Framework aktivieren

Das Go Gin Framework bietet eine leistungsstarke Middleware zum Aktivieren von CORS (Cross-Origin Resource Sharing) in Ihrem Anwendungen. Durch das Hinzufügen dieser Middleware zu Ihrer App können Sie Anfragen unterschiedlicher Herkunft den Zugriff auf Ihre API-Endpunkte ermöglichen.

Berücksichtigen Sie die folgende CORS-Middleware-Implementierung:

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()
        }
    }
}

Die Verwendung dieser Middleware führt jedoch zu Ergebnissen Wenn der Statuscode 200 OK lautet, aber nach OPTION-Anfragen keine weiteren Maßnahmen ergriffen werden, haben Sie möglicherweise etwas Entscheidendes übersehen Schritt:

Fix:

func CORSMiddleware() gin.HandlerFunc {</p>
<pre class="brush:php;toolbar:false">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()
}

}

In der aktualisierten Middleware c.AbortWithStatus(204) gibt den Antwortstatus 204 No Content ohne Text zurück, was auf eine erfolgreiche OPTIONS-Anfrage hinweist und es dem Client ermöglicht, mit der eigentlichen Anfrage fortzufahren.

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich die CORS-Middleware in Go Gin richtig, um OPTIONS-Anfragen zu verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn