in src/main/java/org/apache/sling/engine/impl/SlingJakartaHttpServletResponseImpl.java [336:359]
protected Optional<String> checkContentTypeOverride(@Nullable String contentType) {
if (requestData.getSlingRequestProcessor().getContentTypeHeaderState() == ContentTypeHeaderState.VIOLATED) {
// return immediatly as the content type header has already been violated
// prevoiously, no more checks needed
return Optional.empty();
}
String currentContentType = getContentType();
if (contentType == null) {
requestData.getSlingRequestProcessor().setContentTypeHeaderState(ContentTypeHeaderState.VIOLATED);
return Optional.of(getMessage(currentContentType, null));
} else {
Optional<String> currentMime = currentContentType == null
? Optional.of("null")
: Arrays.stream(currentContentType.split(";")).findFirst();
Optional<String> setMime = Arrays.stream(contentType.split(";")).findFirst();
if (currentMime.isPresent()
&& setMime.isPresent()
&& !currentMime.get().equals(setMime.get())) {
requestData.getSlingRequestProcessor().setContentTypeHeaderState(ContentTypeHeaderState.VIOLATED);
return Optional.of(getMessage(currentContentType, contentType));
}
}
return Optional.empty();
}