Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menentukan Skim URL Permintaan Semasa dalam Go?
Dalam Ruby/Rack, skema URL permintaan semasa boleh diambil menggunakan scheme#request. Walau bagaimanapun, dalam Go, http.Request.URL.Scheme mengembalikan rentetan kosong. Untuk mendapatkan skema dengan betul, anda mesti mempertimbangkan pendekatan berikut:
Menyajikan protokol HTTP dan HTTPS memerlukan penggunaan serentak kedua-dua http.ListenAndServe() dan http.ListenAndServeTLS() dengan pengendali yang sama. Dengan hanya menggunakan http.ListenAndServe(), anda mendengar secara eksklusif untuk protokol HTTP.
HTTPS, sebagai HTTP melalui TLS, menyediakan sifat TLS dalam objek http.Request. Sifat ini mengembalikan objek *tls.ConnectionState, yang mengandungi maklumat tentang TLS yang digunakan untuk permintaan.
Untuk menentukan skim yang digunakan oleh pelanggan, periksa sifat TLS permintaan:
Berikut ialah contoh kod yang dikemas kini yang menunjukkan pendekatan ini :
<code class="go">package main import ( "fmt" "log" "net/http" "net/http/httputil" ) func handler(w http.ResponseWriter, r *http.Request) { // ... if r.TLS == nil { // the scheme was HTTP } else { // the scheme was HTTPS } } func main() { http.HandleFunc("/", handler) go func() { log.Fatal(http.ListenAndServeTLS(":8443", "localhost.crt", "localhost.key", nil)) }() log.Fatal(http.ListenAndServe(":8080", nil)) }</code>
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Skim URL Permintaan Semasa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!