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/
Apabila anda memulakan pelayan http/s, anda boleh menggunakan listenandserve
或 listenandservetls
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!