URL penuh daripada http.Request

WBOY
Lepaskan: 2024-02-09 13:46:04
ke hadapan
1002 orang telah melayarinya

来自 http.Request 的完整 URL

Kandungan soalan

Saya perlu mengembalikan alamat url penuh pelayan dalam respons permintaan, apakah cara terbaik?

func mainpage(w http.responsewriter, r *http.request) {
   if r.method == http.methodpost {
    
       w.write([]byte(r.host + r.requesturi))
   }
}
Salin selepas log masuk

Saya tidak faham cara menambah protokol di sini (http:// atau https://).

localhost:8080/ => http://localhost:8080/
Salin selepas log masuk

Penyelesaian

Apabila anda memulakan pelayan http/s, anda boleh menggunakan listenandservelistenandservetls pada port yang berbeza atau kedua-duanya pada masa yang sama.

Jika anda hanya menggunakan salah satu daripada ini, ia akan menjadi jelas daripada listen.. permintaan skim yang sedang digunakan, dan anda tidak memerlukan cara untuk menyemak dan menetapkannya.

Tetapi jika anda berkhidmat di kedua-dua http dan http/s maka anda boleh menggunakan request.tls 状态。如果是 nil yang bermaksud ia adalah http.

// tls allows http servers and other software to record
    // information about the tls connection on which the request
    // was received. this field is not filled in by readrequest.
    // the http server in this package sets the field for
    // tls-enabled connections before invoking a handler;
    // otherwise it leaves the field nil.
    // this field is ignored by the http client.
    tls *tls.connectionstate
Salin selepas log masuk

Contoh:

func index(w http.ResponseWriter, r *http.Request) {
    scheme := "http"
    if r.TLS != nil {
        scheme = "https"
    }
    w.Write([]byte(fmt.Sprintf("%v://%v%v", scheme, r.Host, r.RequestURI)))
}
Salin selepas log masuk

Atas ialah kandungan terperinci URL penuh daripada http.Request. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
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