diff --git a/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java b/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java index 19e0ebe5..a09fc402 100644 --- a/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java +++ b/instrument-starters/opentracing-spring-cloud-gateway-starter/src/main/java/io/opentracing/contrib/spring/cloud/gateway/TraceRequestHttpHeadersFilter.java @@ -66,7 +66,9 @@ public HttpHeaders filter(HttpHeaders input, ServerWebExchange exchange) { } catch (Exception ignore) { log.error("TraceRequestHttpHeadersFilter error", ignore); } - headersWithInput.addAll(input); + for (Map.Entry> entry : input.entrySet()) { + headersWithInput.addIfAbsent(entry.getKey(), entry.getValue().get(0)); + } addHeadersWithInput(builder, headersWithInput); return headersWithInput; } @@ -86,7 +88,7 @@ private void addHeadersWithInput(ServerHttpRequest.Builder builder, .entrySet()) { String key = entry.getKey(); List value = entry.getValue(); - headersWithInput.put(key, value); + headersWithInput.putIfAbsent(key, value); } }