Bagaimana untuk Menentukan Skim URL Permintaan dalam Go?

Barbara Streisand
Lepaskan: 2024-11-04 15:24:02
asal
280 orang telah melayarinya

How to Determine the Request URL Scheme in Go?

Mencari Skim URL Permintaan dalam Go

Dalam Ruby/Rack, mendapatkan semula skema URL permintaan semasa adalah mudah menggunakan kaedah skim#permintaan. Walau bagaimanapun, dalam Go, http.Request.URL.Scheme menghasilkan rentetan kosong.

Memahami Isu

Sebab di sebalik rentetan kosong ialah Go menyokong penyajian kedua-duanya HTTP dan HTTPS secara lalai. Apabila hanya menggunakan http.ListenAndServe(), anda hanya menyediakan HTTP. Sebaliknya, hanya menggunakan http.ListenAndServeTLS() mengehadkan anda kepada HTTPS.

Penyelesaian: Menggunakan Keadaan Sambungan TLS

Untuk menyelesaikan isu ini, manfaatkan sifat TLS http. Permintaan. Sifat ini menyediakan *tls.ConnectionState, mendedahkan maklumat tentang sebarang TLS yang digunakan dalam permintaan. Dengan menyemak sifat TLS, anda boleh menentukan skema yang digunakan oleh pelanggan:

<code class="go">func handler(w http.ResponseWriter, r *http.Request) {
    if r.TLS == nil {
        fmt.Fprintf(w, "HTTP")
    } else {
        fmt.Fprintf(w, "HTTPS")
    }
}</code>
Salin selepas log masuk

Fungsi Utama Dikemas Kini

Selain itu, sediakan kedua-dua protokol HTTP dan HTTPS dengan menggunakan kedua-dua fungsi mendengar:

<code class="go">func main() {
    http.HandleFunc("/", handler)
    go func() {
        log.Fatal(http.ListenAndServeTLS(":8443", "localhost.crt", "localhost.key", nil))
    }()
    log.Fatal(http.ListenAndServe(":8080", nil))
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Skim URL Permintaan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan