关于内容协商

问题描述

浏览器使用*.htm的URL,发起ajax请求,服务端使用@ResponBody注解响应json串。浏览器无法收到正确的结果,状态码406.

原因分析

spring mvc 4.0新特性,会根据 *.htm、*.json、*.xml 后缀分析出要返回的内容的类型,叫“内容协商”。 它适合于 不拦截后缀的spring配置方案。但我们的spring配置方案是,前台拦截*.htm,后台拦截*.do。 我们的开发框架,无论请求html\json\xml ,前台都拦截*.htm,后台都拦截*.do。 所以spring mvc 4.0新特性,对我们不适用,也用不上,把它关闭就行了, 就像spring 3.0一样了,这就是我们所熟悉的spring。

spring mvc 支持3种内容协商方式:1、根据后缀,2、根据请求头,3、根据参数。我通过配置,关闭了1、2 两种方案。