Avoid setting special Content-* response headers for Tomcat
As of gh-21783, Spring WebFlux uses a `TomcatHeadersAdapter` implementation to directly address the native headers used by the server. In the case of Tomcat, "Content-Length" and "Content-Type" headers are processed separately and should not be added to the native headers map. This commit improves the `HandlerAdapter` implementation for Tomcat and removes those headers, if previously set in the map. The adapter already has a section that handles the Tomcat-specific calls for such headers. Fixes gh-24361
This commit is contained in:
parent
daa30a9f0b
commit
59bef22235
|
@ -216,6 +216,7 @@ public class TomcatHttpHandlerAdapter extends ServletHttpHandlerAdapter {
|
||||||
if (response.getContentType() == null && contentType != null) {
|
if (response.getContentType() == null && contentType != null) {
|
||||||
response.setContentType(contentType.toString());
|
response.setContentType(contentType.toString());
|
||||||
}
|
}
|
||||||
|
getHeaders().remove(HttpHeaders.CONTENT_TYPE);
|
||||||
Charset charset = (contentType != null ? contentType.getCharset() : null);
|
Charset charset = (contentType != null ? contentType.getCharset() : null);
|
||||||
if (response.getCharacterEncoding() == null && charset != null) {
|
if (response.getCharacterEncoding() == null && charset != null) {
|
||||||
response.setCharacterEncoding(charset.name());
|
response.setCharacterEncoding(charset.name());
|
||||||
|
@ -224,6 +225,7 @@ public class TomcatHttpHandlerAdapter extends ServletHttpHandlerAdapter {
|
||||||
if (contentLength != -1) {
|
if (contentLength != -1) {
|
||||||
response.setContentLengthLong(contentLength);
|
response.setContentLengthLong(contentLength);
|
||||||
}
|
}
|
||||||
|
getHeaders().remove(HttpHeaders.CONTENT_LENGTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue