springMVC返回json时报406错误的bug

xiaoxiao2021-02-28  127

    最近在项目遇到一个非常奇怪的问题,就是提交请求一个 http://www.wanan.com/user/doRegister.html   要求返回一个json数据。

    执行都正常,数据获取也正常,返回也正常。但是前台页面一直报406错误(406 Not Acceptable),一直百思不得其解。最后经过 多番查找,终于发现了问题所在;

    问题就在于请求以.html结尾。springMVC的bug,当以.html结尾请求时,就不能正常返回json。他会把返回当做一个HTML来处理。就不会返回json视图。

    问题原因:跟踪源码发现,它在返回json时有个判断,如果是html,他返回的是html,而不是json,那么这个问题如何解决呢?

    一种是直接去掉.html后缀名,但是如果拦截器拦截的.html后缀的请求,就无法进入springMVC框架,这样的话改动的地方就太多了。

    另一种就是在web.xml中再加一个规则,也就是两个规则进入springMVC框架。

                      <servlet-mapping>

                               <servlet-name>springmvc-web</servlet-name>

                               <url-pattern>/service/*<url-pattern>

                       </servlet-mapping>

     也就是访问也service开头的也都能进入springMVC框架,以避开html为结尾的请求。

转载请注明原文地址: https://www.6miu.com/read-68855.html

最新回复(0)