function demo(request,response){
request.getScheme() is returning http instead of returning https.
System.out.println(""+request.getScheme());
}
sortie: http
--La démo de fonction ci-dessus est appelée depuis la méthode principale, mais elle affiche http à la place, elle devrait imprimer https lors d'un travail sur un serveur Internet.
Voir la réponse https://stackoverflow.com/a/19599143/1524502 , et notez les problèmes liés au fait d'être derrière un proxy inverse ou un équilibreur de charge. Très probablement, c'est votre problème.
Le répondant à cette question a recommandé d'utiliser
request.getHeader("x-forwarded-proto")
à la place, cela dépend toutefois de l’équilibrage de l’en-tête correctement défini par l’équilibreur de charge.
Si votre serveur fonctionne derrière un serveur proxy, assurez-vous que votre en-tête de proxy est défini:
proxy_set_header X-Forwarded-Proto $scheme;
Ensuite, pour obtenir la bonne scheme
, vous pouvez utiliser les classes de springframework:
HttpRequest httpRequest = new ServletServerHttpRequest(request); //request is HttpServletRequest
UriComponents uriComponents = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
String scheme = uriComponents.getScheme(); // http/https
J'avais un problème similaire avec getScheme ()
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
J'ai résolu en utilisant "//" à la place:
String basePath = "//"+request.getServerName()+":"+request.getServerPort()+path+"/";