Gestion des requêtes CORS de contrôle en amont dans Go
Lors du développement de requêtes HTTP intersites, vous pouvez rencontrer des requêtes OPTIONS de contrôle en amont pour vérifier la sécurité de la requête. Répondre à ces requêtes de manière appropriée est crucial dans un contexte Go.
Une approche de base consiste à vérifier la méthode de requête dans la fonction de gestionnaire :
func AddResourceHandler(rw http.ResponseWriter, r *http.Request) { switch r.Method { case "OPTIONS": // handle preflight case "PUT": // respond to actual request } }
Une autre option consiste à utiliser le package mux de Gorilla, en enregistrant un Gestionnaire "OPTIONS" de contrôle en amont pour les chemins d'URL pertinents :
r := mux.NewRouter() r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT") r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
Cependant, pour une approche plus élégante, pensez à envelopper votre REST handler :
func corsHandler(h http.Handler) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if (r.Method == "OPTIONS") { //handle preflight in here } else { h.ServeHTTP(w,r) } } }
Vous pouvez ensuite envelopper le gestionnaire comme ceci :
http.Handle("/endpoint/", corsHandler(restHandler))
En séparant votre logique et en réutilisant le gestionnaire CORS, vous rationalisez votre code et améliorez sa maintenabilité .
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!