Maison > développement back-end > Golang > Comment gérer avec élégance les requêtes CORS de contrôle en amont dans Go ?

Comment gérer avec élégance les requêtes CORS de contrôle en amont dans Go ?

Patricia Arquette
Libérer: 2025-01-03 08:51:40
original
155 Les gens l'ont consulté

How to Elegantly Handle Preflight CORS Requests in Go?

Gestion des requêtes CORS de contrôle en amont dans Go

Lors du traitement de requêtes HTTP intersites à partir d'un serveur Go, l'agent utilisateur peut envoyer des requêtes OPTIONS de contrôle en amont pour vérifier la sécurité de la demande. Cet article explore les meilleures pratiques pour gérer et répondre avec élégance à ces requêtes de contrôle en amont.

Traditionnellement, en utilisant le package net/http, on peut 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
  }
}
Copier après la connexion

Alternativement, avec le package mux de Gorilla, on peut enregistrer un gestionnaire de contrôle en amont distinct pour chaque chemin d'URL :

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
Copier après la connexion

Pour Pour simplifier ce processus, envisagez d'encapsuler votre gestionnaire REST avec un gestionnaire CORS qui gère les demandes de contrôle en amont. Par exemple, en utilisant la méthode Handle de net/http :

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

Ce wrapper peut être utilisé comme suit :

http.Handle("/endpoint/", corsHandler(restHandler))
Copier après la connexion

En encapsulant le gestionnaire REST, vous pouvez séparer votre logique et réutiliser le Gestionnaire CORS pour toutes les demandes pertinentes, offrant une solution plus élégante et maintenable.

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