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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-19 01:02:12501Durchsuche

How to Efficiently Handle CORS Preflight Requests in Go?

Verarbeitung von CORS-Preflight-Anfragen mit Go

In einem in Go geschriebenen RESTful-Backend-Server erfordert die Bearbeitung ursprungsübergreifender HTTP-Anfragen die Bearbeitung von Preflight-CORS-Anfragen . So gehen Sie effektiv damit um:

1. Manuelle Methodenprüfung:

In net/http kann die Anforderungsmethode in der Handlerfunktion überprüft werden. Zum Beispiel:

func AddResourceHandler(rw http.ResponseWriter, r *http.Request) {
  switch r.Method {
  case "OPTIONS":
    // Preflight handling logic
  case "PUT":
    // Actual request response
  }
}

2. Gorilla Mux-Paket:

Gorilla Mux ermöglicht die Registrierung eines separaten Preflight-Handlers für jeden URL-Pfad. Zum Beispiel:

r := mux.NewRouter()
r.HandleFunc("/someresource/item", AddResourceHandler).Methods("PUT")
r.HandleFunc("/someresource/item", PreflightAddResourceHandler).Methods("OPTIONS")

3. HTTP-Handler-Wrapper:

Um die Logik zu entkoppeln und den CORS-Handler wiederzuverwenden, sollten Sie den REST-Handler einpacken. Zum Beispiel in net/http:

func corsHandler(h http.Handler) http.HandlerFunc {
  return func(w http.ResponseWriter, r *http.Request) {
    if r.Method == "OPTIONS" {
      // Preflight handling
    } else {
      h.ServeHTTP(w, r)
    }
  }
}

Verwendung:

http.Handle("/endpoint/", corsHandler(restHandler))

Diese Ansätze bieten elegante Lösungen für die Bearbeitung von CORS-Preflight-Anfragen in Go. Wählen Sie diejenige aus, die am besten zu Ihrer Anwendungsarchitektur passt.

Das obige ist der detaillierte Inhalt vonWie kann man CORS-Preflight-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