Hos dan Skim Kosong dalam Pelayan Pembangunan untuk Go
Dalam Go, apabila menggunakan pelayan pembangunan untuk mengendalikan permintaan HTTP, perkara biasa ditemui isu di mana sifat Hos dan Skim http.Request.URL adalah kosong.
Sebab:
Apabila mengakses pelayan pembangunan secara langsung (tanpa proksi HTTP), permintaan sering dibuat dalam format relatif:
GET / Host: localhost:8080
Dalam kes sedemikian, penghurai permintaan Go HTTP mentafsirkan URL sebagai relatif, menyebabkan Hos dan Skim kosong properties.
Mengakses Hos HTTP:
Untuk mendapatkan semula hos HTTP daripada permintaan, akses atribut Hos bagi struct http.Request, seperti yang dilihat dalam kod berikut :
host := r.Host // Returns the host (e.g., "localhost:8080")
Menentukan Jenis URL:
Kepada tentukan sama ada URL adalah mutlak atau relatif, gunakan kaedah IsAbs() struct URL:
isAbsoluteURL := r.URL.IsAbs() // Returns true if the URL is absolute, false otherwise
Contoh dengan Netcat:
Untuk menguji tingkah laku, buat fail permintaan HTTP dengan kandungan berikut:
GET / HTTP/1.1 Host: localhost:8080
Dan laksanakan yang berikut arahan:
cat my-http-request-file | nc localhost 8080
Atas ialah kandungan terperinci Mengapa Hos dan Skim Kosong dalam Permintaan HTTP Pelayan Pembangunan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!