Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4fd6ad0

Browse files
committed
new: check for client IP address also in X-Forwarded-For header
1 parent75f1486 commit4fd6ad0

File tree

1 file changed

+18
-7
lines changed
  • server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/util

1 file changed

+18
-7
lines changed

‎server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/util/NetworkUtils.java‎

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,37 @@
1010
importjava.net.InetAddress;
1111
importjava.net.InetSocketAddress;
1212
importjava.util.Optional;
13+
importjava.util.Set;
1314

1415
@Slf4j
1516
publicclassNetworkUtils {
1617

18+
privatestaticfinalString[]CLIENT_IP_HEADERS = {"X-Forwarded-For","X-Real-IP" };
1719
publicstaticStringgetRemoteIp(ServerWebExchangeserverWebExchange) {
1820
ServerHttpRequestrequest =serverWebExchange.getRequest();
1921
HttpHeadersheaders =request.getHeaders();
20-
StringxRealIp =headers.getFirst("X-Real-IP");
21-
if (StringUtils.isNotBlank(xRealIp)) {
22-
returnxRealIp;
23-
}
24-
StringremoteIp =headers.getFirst("RemoteIp");
25-
if (StringUtils.isNotBlank(remoteIp)) {
26-
returnremoteIp;
22+
23+
/** Try to find remote id in headers **/
24+
StringfoundHeader;
25+
for (Stringheader :CLIENT_IP_HEADERS) {
26+
foundHeader =getMatchingKey(header,headers.keySet());
27+
if (foundHeader !=null) {
28+
log.debug("Found client IP in header: {}",foundHeader);
29+
returnheaders.getFirst(foundHeader);
30+
}
2731
}
32+
2833
log.debug("get remote ip from remoteAddress , header {}",JsonUtils.toJson(headers));
2934
returnOptional.ofNullable(serverWebExchange.getRequest().getRemoteAddress())
3035
.map(InetSocketAddress::getAddress)
3136
.map(InetAddress::getHostAddress)
3237
.orElse("");
3338
}
3439

40+
privatestaticStringgetMatchingKey(Stringkey,Set<String>keys) {
41+
returnkeys.stream()
42+
.filter(headerKey ->StringUtils.equalsIgnoreCase(key,headerKey))
43+
.findFirst()
44+
.orElse(null);
45+
}
3546
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp