Rumah >pembangunan bahagian belakang >Golang >Mengapa Hos dan Skim Kosong dalam Permintaan HTTP Pelayan Pembangunan Go?

Mengapa Hos dan Skim Kosong dalam Permintaan HTTP Pelayan Pembangunan Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-20 07:27:09278semak imbas

Why Are Host and Scheme Blank in Go's Development Server HTTP Requests?

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!

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