Rumah >pembangunan bahagian belakang >Golang >Bagaimana Mengendalikan Permintaan Prapenerbangan CORS dengan Cekap dalam Go?

Bagaimana Mengendalikan Permintaan Prapenerbangan CORS dengan Cekap dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-12-19 01:02:12488semak imbas

How to Efficiently Handle CORS Preflight Requests in Go?

Mengendalikan Permintaan Prapenerbangan CORS dengan Go

Dalam pelayan bahagian belakang RESTful yang ditulis dalam Go, pengendalian permintaan HTTP silang asal memerlukan menangani permintaan CORS prapenerbangan . Inilah cara untuk menangani mereka dengan berkesan:

1. Semakan Kaedah Manual:

Dalam net/http, kaedah permintaan boleh disemak dalam fungsi pengendali. Contohnya:

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

2. Pakej Gorilla Mux:

Gorilla Mux membenarkan pendaftaran pengendali pra-penerbangan yang berasingan untuk setiap laluan URL. Contohnya:

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

3. Pembalut Pengendali HTTP:

Untuk memisahkan logik dan menggunakan semula pengendali CORS, pertimbangkan untuk membalut pengendali REST. Contohnya, dalam 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)
    }
  }
}

Penggunaan:

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

Pendekatan ini menyediakan penyelesaian yang elegan untuk mengendalikan permintaan pra-penerbangan CORS dalam Go. Pilih yang paling sesuai dengan seni bina aplikasi anda.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Permintaan Prapenerbangan CORS dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn