springMVC返回json时报406错误的bug
2017-09-01 10:38
477 查看
最近在项目遇到一个非常奇怪的问题,就是提交请求一个 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为结尾的请求。
执行都正常,数据获取也正常,返回也正常。但是前台页面一直报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为结尾的请求。
相关文章推荐
- springMVC 中url后缀使用html,不能返回json数据,否则会报406错误
- 解决springmvc 返回JSON报406错误
- springmvc 返回 json报406错误
- SpringMVC返回JSON时406错误
- SpringMVC返回JSON数据406错误处理
- springmvc返回json数据406错误的解决办法
- SpringMVC 利用@ResponseBody注解返回Json时,出现406 not acceptable 错误的解决方法。
- springmvc返回json格式数据报406错误
- spring mvc json返回的时候,406错误。
- 解决SpringMvc返回json报Response 406 Not Acceptable
- Spring MVC 4.2 RESTFUL风格返回JSON数据406错误处理
- Spring MVC 返回json数据报406错误
- SpringMVC ajax传递json数组到后台报406错误的解决办法
- springMvc中406错误解决,springMvc使用json出现406 (Not Acceptable)
- Spring MVC 4.1.4 RESTFUL风格返回JSON数据406错误处理 .
- springmvc中 ajax请求错误,返回406,并一直进入error的回调方法,以及返回参数为Object
- spring mvc 4.1 返回json报406错误的解决办法
- ssm框架返回json .do 406 (Not Acceptable)错误
- spring返回 json报406错误
- SpringMVC使用@ResponseBody返回是报406错误