* @return
*/
static UriComponentsBuilder getBuilder() {
HttpServletRequest request = getCurrentRequest();
ServletUriComponentsBuilder builder = ServletUriComponentsBuilder.fromServletMapping(request);
String forwardedSsl = request.getHeader("X-Forwarded-Ssl");
if (StringUtils.hasText(forwardedSsl) && forwardedSsl.equalsIgnoreCase("on")) {
builder.scheme("https");
}
String host = request.getHeader("X-Forwarded-Host");
if (!StringUtils.hasText(host)) {
return builder;
}
String[] hosts = StringUtils.commaDelimitedListToStringArray(host);
String hostToUse = hosts[0];
if (hostToUse.contains(":")) {
String[] hostAndPort = StringUtils.split(hostToUse, ":");
builder.host(hostAndPort[0]);
builder.port(Integer.parseInt(hostAndPort[1]));
} else {
builder.host(hostToUse);
builder.port(-1); // reset port if it was forwarded from default port
}
String port = request.getHeader("X-Forwarded-Port");
if (StringUtils.hasText(port)) {
builder.port(Integer.parseInt(port));
}
return builder;
}