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