|
24 | 24 | import com.fasterxml.jackson.annotation.JsonValue; |
25 | 25 | import io.undertow.util.HeaderMap; |
26 | 26 | import io.undertow.util.HttpString; |
| 27 | +import org.slf4j.Logger; |
| 28 | +import org.slf4j.LoggerFactory; |
27 | 29 |
|
| 30 | +import java.nio.charset.CharsetEncoder; |
| 31 | +import java.nio.charset.StandardCharsets; |
| 32 | +import java.util.HashMap; |
28 | 33 | import java.util.Map; |
29 | 34 |
|
30 | 35 | public class HttpHeaders { |
31 | 36 |
|
32 | 37 | private final HeaderMap undertowHeaderMap = new HeaderMap(); |
33 | 38 | private final Map<String, String> headers; |
34 | 39 |
|
| 40 | + private final static Logger logger = LoggerFactory.getLogger(HttpHeaders.class); |
| 41 | + |
35 | 42 | @JsonCreator |
36 | 43 | public HttpHeaders(Map<String, String> headers) { |
37 | | - this.headers = headers; |
| 44 | + Map<String, String> filteredHeaders = new HashMap<>(); |
38 | 45 | for (Map.Entry<String, String> header : headers.entrySet()) { |
| 46 | + if (!StandardCharsets.ISO_8859_1.newEncoder().canEncode(header.getValue())) { |
| 47 | + logger.warn("Header '{}' with value '{}', contains non ISO-8859-1/ISO-Latin-1 characters, not adding header.", header.getKey(), header.getValue()); |
| 48 | + continue; |
| 49 | + } |
39 | 50 | undertowHeaderMap.put(new HttpString(header.getKey()), header.getValue()); |
| 51 | + filteredHeaders.put(header.getKey(), header.getValue()); |
40 | 52 | } |
| 53 | + this.headers = filteredHeaders; |
41 | 54 | } |
42 | 55 |
|
43 | 56 | public HeaderMap getUndertowHeaderMap() { |
|
0 commit comments