HTTP Status 406. Spring MVC 4.0, jQuery, JSON

前端 未结 5 1730
栀梦
栀梦 2020-12-02 00:58

I want to send JSON from my controller. I have the following configuration.

spring-servlet.xml :



        
5条回答
  •  粉色の甜心
    2020-12-02 01:29

    The main issue here is that the path "/test.htm" is going to use content negotiation first before checking the value of an Accept header. With an extension like *.htm, Spring will use a org.springframework.web.accept.ServletPathExtensionContentNegotiationStrategy and resolve that the acceptable media type to return is text/html which does not match what MappingJacksonHttpMessageConverter produces, ie. application/json and therefore a 406 is returned.

    The simple solution is to change the path to something like /test, in which content negotiation based on the path won't resolve any content type for the response. Instead, a different ContentNegotiationStrategy based on headers will resolve the value of the Accept header.

    The complicated solution is to change the order of the ContentNegotiationStrategy objects registered with the RequestResponseBodyMethodProcessor which handles your @ResponseBody.

提交回复
热议问题