当http和https请求共存的时候,经常后端需要判断当前请求是https还是http,根据当前请求的类型返回不同的数据,在这里总结了一下。
1、根据请求的Scheme判断,但是这种在Nginx SSL + tomcat集群配置不完全正确的情况下,取出来的永远都是http,是不正确的:
String scheme = request.getScheme();
if(StringUtil.isNotBlank(scheme) ){
return scheme.toLowerCase();
}
2、根据请求的url获取,其实这种内部使用的还是scheme方式,只是内部封装了一下
String url = request.getRequestURL().toString();
if(StringUtil.isNotBlank(url)) && url.startsWith("https"){
return "https";
}
return "https";
3、根据Header请求获取
String refererURL = beat.getRequest().getHeader("https-tag");
if(StringUtil.isNotBlank(refererURL)){
return refererURL.toLowerCase();
}
return "https";