Rumah >pembangunan bahagian belakang >Golang >Mengapa r.URL.Host dan r.URL.Skim Kosong dalam Pelayan Pembangunan My Go?

Mengapa r.URL.Host dan r.URL.Skim Kosong dalam Pelayan Pembangunan My Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-15 18:56:10887semak imbas

Why are r.URL.Host and r.URL.Scheme Empty in My Go Development Server?

Akses URL Relatif dalam Pelayan Pembangunan

Soalan:

Apabila menjalankan pelayan HTTP Go dalam pembangunan, mengapa r.URL.Host dan r.URL.Skim kosong untuk masuk permintaan?

Jawapan:

Ketiadaan hos dan maklumat skema dalam r.URL disebabkan oleh penggunaan URL relatif semasa mengakses pelayan semasa pembangunan. URL relatif tidak menyatakan hos atau skema, tidak seperti URL mutlak.

Permintaan Relatif:

Biasanya, penyemak imbas web mengeluarkan permintaan mutlak, seperti:

GET http://localhost:8080/ HTTP/1.1
Host: localhost:8080

Walau bagaimanapun, apabila mengakses pelayan pembangunan tempatan secara langsung, penyemak imbas boleh menggunakan relatif permintaan:

GET / HTTP/1.1
Host: localhost:8080

Dalam permintaan relatif ini, hanya laluan ditentukan dan hos serta skema ditinggalkan. Akibatnya, r.URL.Host dan r.URL.Skim akan kosong apabila pelayan menerima permintaan sedemikian.

Mengakses Maklumat Hos:

Untuk mendapatkan semula maklumat hos dalam situasi ini, anda boleh menggunakan atribut r.Host bagi http.Request struct.

host := r.Host

Permintaan Mutlak (Pilihan):

Untuk memastikan anda sentiasa menerima permintaan mutlak, anda boleh menggunakan proksi HTTP. Apabila menggunakan proksi, proksi akan memajukan permintaan mutlak kepada pelayan dan r.URL.Host dan r.URL.Skim akan mengandungi nilai yang dijangkakan.

IsAbs() Semak:

Anda juga boleh menyemak sama ada URL dalam permintaan adalah mutlak atau relatif menggunakan kaedah IsAbs() r.URL struct:

isAbsoluteURL := r.URL.IsAbs()

Atas ialah kandungan terperinci Mengapa r.URL.Host dan r.URL.Skim Kosong dalam Pelayan Pembangunan My 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