Heim >Backend-Entwicklung >Golang >Wie kann man Preflight-CORS-Anfragen in Go effizient bearbeiten?

Wie kann man Preflight-CORS-Anfragen in Go effizient bearbeiten?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 01:48:17217Durchsuche

How to Efficiently Handle Preflight CORS Requests in Go?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn