Maison > développement back-end > Golang > Comment configurer correctement le middleware CORS dans le framework Go's Gin ?

Comment configurer correctement le middleware CORS dans le framework Go's Gin ?

Patricia Arquette
Libérer: 2024-12-23 03:00:54
original
251 Les gens l'ont consulté

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

Go Gin Framework : gestion du CORS (Cross-Origin Resource Sharing)

Dans le framework Go Gin, la configuration du Cross-Origin Resource Sharing (CORS) permet aux clients d'origines différentes pour accéder à vos ressources. Cependant, vous pouvez rencontrer des problèmes où les requêtes CORS ne renvoient pas le comportement attendu, comme dans le cas de l'utilisateur qui a reçu une réponse vide après l'envoi d'une requête OPTIONS.

Pour résoudre ce problème, nous pouvons analyser la réponse de l'utilisateur. middleware fourni et comparez-le à un logiciel fonctionnel exemple :

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

Différences :

  • Code d'état d'abandon : le middleware fonctionnel s'arrête avec un code d'état de 204 (Pas de contenu) pour les requêtes OPTIONS, tandis que le middleware de l'utilisateur abandonne avec 200 (OK).
  • Méthodes autorisées : Le middleware fonctionnel autorise uniquement les méthodes POST, OPTIONS, GET et PUT, tandis que le middleware de l'utilisateur inclut DELETE et UPDATE.

Par conséquent, pour résoudre le problème, l'utilisateur doit mettre à jour son middleware pour qu'il corresponde à l'exemple fonctionnel, notamment en corrigeant le code d'état d'abandon et en ajustant le nombre autorisé. méthodes.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal