问题遇到的现象和发生背景 ?
问题相关代码,请勿粘贴截图
由于该php接口返回的Content-Type: application/json charset=utf-8 ,注意中间是空格而不是;号,导致代码执行checkToken方法校验的时候空格不含在TOKEN中导致的报异常,如果兼容这种规则?
版本 spring-core-5.3.9.jar
类 MimeType.java
行 220行
private void checkToken(String token) {
for (int i = 0; i < token.length(); i++) {
char ch = token.charAt(i);
if (!TOKEN.get(ch)) {
throw new IllegalArgumentException("Invalid token character '" + ch + "' in token \"" + token + "\"");
}
}
}
异常
Caused by: org.springframework.http.InvalidMediaTypeException: Invalid mime type "application/json charset=utf-8": Invalid token character ' ' in token "json charset=utf-8"
at org.springframework.http.MediaType.parseMediaType(MediaType.java:620) ~[spring-web-5.3.9.jar:5.3.9]
at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:992) ~[spring-web-5.3.9.jar:5.3.9]
at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:136) ~[spring-web-5.3.9.jar:5.3.9]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:93) ~[spring-web-5.3.9.jar:5.3.9]
at org.springframework.cloud.openfeign.support.SpringDecoder.decode(SpringDecoder.java:57) ~[spring-cloud-openfeign-core-3.0.3.jar:3.0.3]
at org.springframework.cloud.openfeign.support.ResponseEntityDecoder.decode(ResponseEntityDecoder.java:61) ~[spring-cloud-openfeign-core-3.0.3.jar:3.0.3]
at feign.optionals.OptionalDecoder.decode(OptionalDecoder.java:36) ~[feign-core-10.12.jar:na]
at feign.AsyncResponseHandler.decode(AsyncResponseHandler.java:115) ~[feign-core-10.12.jar:na]
... 74 common frames omitted
Caused by: org.springframework.util.InvalidMimeTypeException: Invalid mime type "application/json charset=utf-8": Invalid token character ' ' in token "json charset=utf-8"
at org.springframework.util.MimeTypeUtils.parseMimeTypeInternal(MimeTypeUtils.java:261) ~[spring-core-5.3.9.jar:5.3.9]
at org.springframework.util.ConcurrentLruCache.get(ConcurrentLruCache.java:107) ~[spring-core-5.3.9.jar:5.3.9]
at org.springframework.util.MimeTypeUtils.parseMimeType(MimeTypeUtils.java:195) ~[spring-core-5.3.9.jar:5.3.9]
at org.springframework.http.MediaType.parseMediaType(MediaType.java:617) ~[spring-web-5.3.9.jar:5.3.9]
... 81 common frames omitted