Skip to content

Commit 99ed16c

Browse files
committed
fix forwarded proto
1 parent c9b289f commit 99ed16c

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

xtraplatform-base/src/main/java/de/ii/xtraplatform/base/domain/WebContext.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,8 @@ default List<String> getPathPrefix() {
2121
? List.of()
2222
: Splitter.on('/').trimResults().omitEmptyStrings().splitToList(getUri().getPath());
2323
}
24+
25+
default boolean isHttps() {
26+
return "https".equalsIgnoreCase(getUri().getScheme());
27+
}
2428
}

xtraplatform-web/src/main/java/de/ii/xtraplatform/web/domain/ForwardedUri.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,33 @@
1515
public interface ForwardedUri {
1616

1717
String X_FORWARDED_PREFIX = "X-Forwarded-Prefix";
18+
String X_FORWARDED_PROTO = "X-Forwarded-Proto";
1819
Splitter PATH_SPLITTER = Splitter.on('/').trimResults().omitEmptyStrings();
1920

2021
static URICustomizer from(ContainerRequestContext requestContext, WebContext webContext) {
21-
return new URICustomizer(requestContext.getUriInfo().getRequestUri())
22+
return customizer(requestContext, webContext)
2223
.prependPathSegments(prefix(requestContext, webContext));
2324
}
2425

2526
static URICustomizer base(ContainerRequestContext requestContext, WebContext webContext) {
26-
return new URICustomizer(requestContext.getUriInfo().getRequestUri())
27+
return customizer(requestContext, webContext)
2728
.setPathSegments(prefix(requestContext, webContext))
2829
.ensureNoTrailingSlash()
2930
.clearParameters();
3031
}
3132

33+
static URICustomizer customizer(ContainerRequestContext requestContext, WebContext webContext) {
34+
URICustomizer uriCustomizer = new URICustomizer(requestContext.getUriInfo().getRequestUri());
35+
36+
if (!"https".equalsIgnoreCase(uriCustomizer.getScheme())
37+
&& !requestContext.getHeaders().containsKey(X_FORWARDED_PROTO)
38+
&& webContext.isHttps()) {
39+
uriCustomizer.setScheme("https");
40+
}
41+
42+
return uriCustomizer;
43+
}
44+
3245
static List<String> prefix(ContainerRequestContext requestContext, WebContext webContext) {
3346
if (requestContext.getHeaders().containsKey(X_FORWARDED_PREFIX)) {
3447
return PATH_SPLITTER.splitToList(requestContext.getHeaderString(X_FORWARDED_PREFIX));

0 commit comments

Comments
 (0)