Bagaimana Anda Menentukan Skim URL Permintaan dalam Go?

DDD
Lepaskan: 2024-11-03 06:10:03
asal
874 orang telah melayarinya

How Do You Determine the Request URL Scheme in Go?

Menentukan Skim URL Permintaan dalam Go

Dalam perisian tengah Rack untuk Ruby, memperoleh skema URL permintaan semasa adalah mudah menggunakan kaedah scheme#request. Walau bagaimanapun, dalam Go, medan http.Request.URL.Scheme mengembalikan rentetan kosong, membuatkan pembangun bingung.

Menyingkap Skim

Kunci untuk membuka kunci skema URL permintaan dalam Go terletak pada menyedari bahawa kedua-dua permintaan HTTP dan HTTPS mesti dikendalikan. Dengan menggunakan kedua-dua fungsi http.ListenAndServe() dan http.ListenAndServeTLS(), kami memenuhi kedua-dua protokol.

TLS to the Rescue

HTTPS, sebagai HTTP melalui TLS, menyediakan sifat TLS dalam *http.Permintaan yang mendedahkan maklumat tentang sambungan TLS. Dengan memeriksa sifat ini, kita boleh membezakan protokol yang digunakan:

  • Jika r.TLS bukan nol, permintaan dibuat melalui HTTPS.
  • Jika r.TLS adalah batal, permintaan itu dibuat melalui HTTP.

Pelaksanaan

<code class="go">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>
Salin selepas log masuk

Pendekatan ini memastikan bahawa permintaan dikendalikan dengan lancar tanpa mengira sama ada ia adalah HTTP atau HTTPS, menyediakan mekanisme yang boleh dipercayai untuk menentukan minta skim URL.

Atas ialah kandungan terperinci Bagaimana Anda 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!