request.getScheme()返回http而不是在java中返回https
function demo(request,response){ request.getScheme() is returning http instead of returning https. System.out.println(""+request.getScheme()); }
输出:HTTP
– 从main方法调用上面的函数演示,但它打印http而不是它应该在互联网服务器上打印https。
请参阅答案https://stackoverflow.com/a/19599143/1524502 ,并注意有关作为反向代理或负载均衡器的问题。 最有可能的是,这是你的问题。
该问题的回答者建议使用
request.getHeader("x-forwarded-proto")
相反,尽管这取决于您的负载均衡器正确设置标头。
如果您的服务器在代理服务器后面运行,请确保设置了代理标头:
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