Rumah  >  Artikel  >  pembangunan bahagian belakang  >  URL penuh daripada http.Request

URL penuh daripada http.Request

WBOY
WBOYke hadapan
2024-02-09 13:46:04963semak imbas

来自 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))
   }
}

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

localhost:8080/ => http://localhost:8080/

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

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)))
}

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

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam