Heim >Backend-Entwicklung >Golang >Wie kann man Preflight-CORS-Anfragen in Go elegant bearbeiten?
Verarbeitung von Preflight-CORS-Anfragen in Go
Bei der Bereitstellung standortübergreifender HTTP-Anfragen von einem Go-Server sendet der Benutzeragent möglicherweise Preflight-OPTIONS-Anfragen um die Sicherheit der Anfrage zu überprüfen. In diesem Artikel werden die Best Practices für die elegante Bearbeitung und Beantwortung dieser Preflight-Anfragen untersucht.
Traditionell kann man mit dem Paket net/http die Anforderungsmethode in der Handler-Funktion überprüfen:
func AddResourceHandler(rw http.ResponseWriter, r *http.Request) { switch r.Method { case "OPTIONS": // handle preflight case "PUT": // respond to actual request } }
Alternativ kann man mit Gorillas Mux-Paket einen separaten Preflight-Handler für jeden URL-Pfad registrieren:
r := mux.NewRouter() r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT") r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")
An Um diesen Prozess zu vereinfachen, sollten Sie Ihren REST-Handler mit einem CORS-Handler umschließen, der Preflight-Anfragen verarbeitet. Verwenden Sie beispielsweise die Handle-Methode von 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) } } }
Dieser Wrapper kann wie folgt verwendet werden:
http.Handle("/endpoint/", corsHandler(restHandler))
Durch das Einschließen des REST-Handlers können Sie Ihre Logik trennen und wiederverwenden CORS-Handler für alle relevanten Anfragen, der eine elegantere und wartbarere Lösung bietet.
Das obige ist der detaillierte Inhalt vonWie kann man Preflight-CORS-Anfragen in Go elegant bearbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!