Correctly calculate base URL when behind multiple reverse proxies

Signed-off-by: Nathan Rennie-Waldock <nathan.renniewaldock@gmail.com>
master
Nathan Rennie-Waldock 8 years ago
parent 154d4316e6
commit 3b3491384a
  1. 13
      libresonic-main/src/main/java/org/libresonic/player/service/NetworkService.java

@ -60,8 +60,21 @@ public class NetworkService {
private static URI calculateProxyUri(HttpServletRequest request) throws URISyntaxException { private static URI calculateProxyUri(HttpServletRequest request) throws URISyntaxException {
String xForardedHost = request.getHeader(X_FORWARDED_HOST); String xForardedHost = request.getHeader(X_FORWARDED_HOST);
// If the request has been through multiple reverse proxies,
// We need to return the original Host that the client used
if (xForardedHost != null) {
xForardedHost = xForardedHost.split(",")[0];
}
if(!isValidXForwardedHost(xForardedHost)) { if(!isValidXForwardedHost(xForardedHost)) {
xForardedHost = request.getHeader(X_FORWARDED_SERVER); xForardedHost = request.getHeader(X_FORWARDED_SERVER);
// If the request has been through multiple reverse proxies,
// We need to return the original Host that the client used
if (xForardedHost != null) {
xForardedHost = xForardedHost.split(",")[0];
}
if(!isValidXForwardedHost(xForardedHost)) { if(!isValidXForwardedHost(xForardedHost)) {
throw new RuntimeException("Cannot calculate proxy uri without HTTP header " + X_FORWARDED_HOST); throw new RuntimeException("Cannot calculate proxy uri without HTTP header " + X_FORWARDED_HOST);
} }

Loading…
Cancel
Save