看到接口错误日志发现,报错了如下信息:
org.springframework.web.HttpMediaTypeNotAcceptableException:
Could not parse 'Accept' header ["/*]: Invalid mime type ""/*"
通过分析发现是前端的Accept传的不对,一般为客户端所支持的内容编码格式,比如application/json等,也可以为通配符如*/,但是此时前端传的确实/,目前前端也没找到原因,并且报错也是少数,于是从后端入手避免报错;
解决方案
在web配置代码中,加入以下代码即可
@Configuration
public class WebConfig implements WebMvcConfigurer {
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.ignoreAcceptHeader(true);
configurer.defaultContentType(MediaType.APPLICATION_JSON, MediaType.TEXT_HTML);
}
其中configurer.ignoreAcceptHeader(true)的作用是忽略头信息中的Accept,而configurer.defaultContentType则为默认返回给前端的内容编码类型;
如果只设置默认编码类型为MediaType.APPLICATION_JSON,当接口返回的是MediaType.TEXT_HTML时则依然报406错误,如下面代码,所以需要将所需要的内容编码类型都加上:
@GetMapping(value = "/check", produces = MediaType.TEXT_HTML_VALUE)
public String checkHtml(HttpServletRequest request) {
...
}
本文由 GY 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2023/12/06 13:56