Verarbeitung von Preflight-CORS-Anfragen in Go
Bei der Entwicklung von standortübergreifenden HTTP-Anfragen können Sie auf Preflight-OPTIONS-Anfragen stoßen, um die Sicherheit der Anfrage zu überprüfen. Die angemessene Bearbeitung dieser Anfragen ist in einem Go-Kontext von entscheidender Bedeutung.
Ein grundlegender Ansatz besteht darin, die Anforderungsmethode in der Handler-Funktion zu überprüfen:
func AddResourceHandler(rw http.ResponseWriter, r *http.Request) { switch r.Method { case "OPTIONS": // handle preflight case "PUT": // respond to actual request } }
Eine andere Option ist die Verwendung des Mux-Pakets von Gorilla, die Registrierung eines Preflight-Handler „OPTIONS“ für relevante URL-Pfade:
r := mux.NewRouter() r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT") r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
Für einen eleganteren Ansatz sollten Sie jedoch in Betracht ziehen, Ihren REST zu verpacken 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) } } }
Sie können den Handler dann wie folgt umschließen:
http.Handle("/endpoint/", corsHandler(restHandler))
Indem Sie Ihre Logik heraustrennen und den CORS-Handler wiederverwenden, optimieren Sie Ihren Code und verbessern seine Wartbarkeit .
Das obige ist der detaillierte Inhalt vonWie kann man Preflight-CORS-Anfragen in Go effizient bearbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!