Maison > développement back-end > Golang > URL complète de http.Request

URL complète de http.Request

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-09 13:46:04
avant
1045 Les gens l'ont consulté

来自 http.Request 的完整 URL

Contenu de la question

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))
   }
}
Copier après la connexion

Je ne comprends pas comment ajouter un protocole ici (http:// ou https://).

localhost:8080/ => http://localhost:8080/
Copier après la connexion

Solution de contournement

Lorsque vous démarrez un serveur http/s, vous pouvez utiliser listenandservelistenandservetls 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
Copier après la connexion

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)))
}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal