Maison > développement back-end > Golang > Comment configurer correctement le middleware CORS dans Go Gin pour gérer les requêtes OPTIONS ?

Comment configurer correctement le middleware CORS dans Go Gin pour gérer les requêtes OPTIONS ?

Susan Sarandon
Libérer: 2024-12-21 03:10:09
original
474 Les gens l'ont consulté

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

Activation de CORS dans le framework Go Gin

Le framework Go gin fournit un middleware puissant pour activer CORS (Cross-Origin Resource Sharing) dans votre candidatures. En ajoutant ce middleware à votre application, vous pouvez autoriser les requêtes provenant de différentes origines à accéder aux points de terminaison de votre API.

Considérez l'implémentation du middleware CORS suivante :

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()
        }
    }
}
Copier après la connexion

Cependant, si vous utilisez ce middleware, les résultats dans un code d'état de 200 OK mais aucune autre action après les demandes OPTION, vous avez peut-être manqué un élément crucial étape :

Correction :

func CORSMiddleware() gin.HandlerFunc {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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()
}
Copier après la connexion

}

Dans le middleware mis à jour, c.AbortWithStatus(204) renverra un statut de réponse de 204 No Content sans aucun corps, indiquant une demande OPTIONS réussie et permettant au client de poursuivre la demande réelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal