Skip to content

Commit 178ca56

Browse files
ngocnhan-tran1996jzheaux
authored andcommitted
Fallback defaultTargetUrl if refererHeader is empty
Closes gh-18805 Signed-off-by: Tran Ngoc Nhan <ngocnhan.tran1996@gmail.com>
1 parent 61ccf14 commit 178ca56

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

web/src/main/java/org/springframework/security/web/authentication/AbstractAuthenticationTargetUrlRequestHandler.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,11 @@ protected String determineTargetUrl(HttpServletRequest request, HttpServletRespo
112112
trace("Using url %s from request parameter %s", targetUrlParameterValue, this.targetUrlParameter);
113113
return targetUrlParameterValue;
114114
}
115-
if (this.useReferer) {
116-
trace("Using url %s from Referer header", request.getHeader("Referer"));
117-
return request.getHeader("Referer");
115+
116+
String refererHeader = request.getHeader("Referer");
117+
if (this.useReferer && StringUtils.hasText(refererHeader)) {
118+
trace("Using url %s from Referer header", refererHeader);
119+
return refererHeader;
118120
}
119121
return this.defaultTargetUrl;
120122
}

web/src/test/java/org/springframework/security/web/authentication/AbstractAuthenticationTargetUrlRequestHandlerTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,11 @@ void setRedirectStrategyWhenGivenNullThenThrowsException() {
114114
assertThatIllegalArgumentException().isThrownBy(() -> this.handler.setRedirectStrategy(null));
115115
}
116116

117+
@Test
118+
void returnDefaultUrlIfUseRefererIsTrueAndRefererHeaderIsEmpty() {
119+
this.handler.setUseReferer(true);
120+
this.request.addHeader("Referer", "");
121+
assertThat(this.handler.determineTargetUrl(this.request, this.response)).isEqualTo(DEFAULT_TARGET_URL);
122+
}
123+
117124
}

0 commit comments

Comments
 (0)