您的位置:首页 > 编程语言 > Java开发

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为结尾的请求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: