function demo(request,response){
request.getScheme() is returning http instead of returning https.
System.out.println(""+request.getScheme());
}
输出:http
--上面的函数演示在主方法中被调用,但它打印出了“http”,而不是在互联网服务器上工作时应该打印出“https”。
function demo(request,response){
request.getScheme() is returning http instead of returning https.
System.out.println(""+request.getScheme());
}
输出:http
--上面的函数演示在主方法中被调用,但它打印出了“http”,而不是在互联网服务器上工作时应该打印出“https”。
如果您的服务器在代理服务器后面运行,请确保设置了代理头:
proxy_set_header X-Forwarded-Proto $scheme;
要获取正确的scheme
,您可以使用springframework的类:
HttpRequest httpRequest = new ServletServerHttpRequest(request); //request is HttpServletRequest
UriComponents uriComponents = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
String scheme = uriComponents.getScheme(); // http/https
request.getHeader("x-forwarded-proto")
然而,这取决于您的负载均衡器正确设置标头。
我曾经遇到过一个类似的问题,涉及到getScheme()方法。
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String basePath = "//"+request.getServerName()+":"+request.getServerPort()+path+"/";