See #33823 : the MultiValueMap methods that iterate over the whole header collection misalign with some underlying server implementations.

On the other hand having HttpHeaders implement MultiValueMap brings in some (marginal?) benefits: using CollectionUtils, asserting headers with map-specific assertions, putting all the headers into a plain Map (map.putAll(headers)), etc...

Comment From: simonbasle

Keeping track of notable areas where we check for generic Map for headers (and now should check for both Map and HttpHeaders): - RequestHeaderMapMethodArgumentResolver - RequestHeaderMethodArgumentResolver

Comment From: simonbasle

Notable possible additions to HttpHeaders API that could be backported to 6.2.x: - getOrEmpty using a String key - getOrDefault (similarly using a String key) - addAll(HttpHeaders) - containsHeader(String headerName) - hasHeaderValues(String, List<String>) - containsHeaderValue(String, String) - putAll(HttpHeaders) - remove(String) - ...