같은 문제가있는 다른 사용자는 Spring MVC 파일 업로드 컨트롤러 클래스 메서드에 "NoJsonPrefix"라는 응답 헤더를 추가하여이 문제를 해결했습니다. 그런 다음 Spring MappingJacksonHttpMessageConverter를 확장하고 NoJsonPrefix의 응답 헤더를 확인합니다. 존재하는 경우, json 응답은 접두사가 붙지 않습니다. 이것은 json 응답이 접두사가되어서는 안되는 이상한 경우에 잘 동작합니다.
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.set("NoJsonPrefix", "true");
return new ResponseEntity<Map<String, Object>>(generateResponse(documentDto), responseHeaders, HttpStatus.OK);
public class PrefixedMappingJacksonHttpMessageConverter extends MappingJacksonHttpMessageConverter {
@Value("${http.response.json.prefix}")
private boolean prefixJson;
@Override
protected void writeInternal(Object object, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
JsonEncoding encoding = getJsonEncoding(outputMessage.getHeaders().getContentType());
JsonGenerator jsonGenerator = getObjectMapper().getJsonFactory().createJsonGenerator(outputMessage.getBody(), encoding);
if (getObjectMapper().getSerializationConfig().isEnabled(SerializationConfig.Feature.INDENT_OUTPUT)) {
jsonGenerator.useDefaultPrettyPrinter();
}
String noJsonPrefix = outputMessage.getHeaders().getFirst("NoJsonPrefix");
try {
if (this.prefixJson && noJsonPrefix == null) {
jsonGenerator.writeRaw(")]}',\n");
}
getObjectMapper().writeValue(jsonGenerator, object);
} catch (JsonProcessingException ex) {
throw new HttpMessageNotWritableException("Could not write JSON: " + ex.getMessage(), ex);
}
}
}
<mvc:annotation-driven ignoreDefaultModelOnRedirect="true">
<mvc:message-converters>
<bean class="com.***.web.security.PrefixedMappingJacksonHttpMessageConverter">
<property name="prefixJson" value="${http.response.json.prefix}" />
</bean>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.FormHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>