Maison >développement back-end >Golang >URL complète de http.Request
Je dois renvoyer l'adresse URL complète du serveur dans la réponse à la demande, quelle est la meilleure façon ?
func mainpage(w http.responsewriter, r *http.request) { if r.method == http.methodpost { w.write([]byte(r.host + r.requesturi)) } }
Je ne comprends pas comment ajouter un protocole ici (http:// ou https://).
localhost:8080/ => http://localhost:8080/
Lorsque vous démarrez un serveur http/s, vous pouvez utiliser listenandserve
或 listenandservetls
sur différents ports ou les deux en même temps.
Si vous n'en utilisez qu'un seul, il sera évident à partir de listen..
quelle demande de schéma est utilisée, et vous n'aurez pas besoin d'un moyen de la vérifier et de la définir.
Mais si vous servez à la fois sur http et http/s, vous pouvez utiliser request.tls
状态。如果是 nil
, ce qui signifie qu'il s'agit de 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
Exemple :
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))) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!