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!