【发布时间】:2015-08-18 11:21:55
【问题描述】:
HTTP 请求可以包含Accept 标头,指示客户端可以接受的响应的媒体类型。服务器应通过提供具有与请求的媒体类型(之一)匹配的Content-Type 的响应来响应请求。媒体类型可能包含参数。 HTTP 是否要求此内容协商过程尊重参数?
即如果客户端请求
Accept: application/vnd.example; version=2
(这里version参数的值为2),服务端可以服务媒体类型application/vnd.example; version=1,但不能服务application/vnd.example; version=2,服务端提供响应是否可以
Content-Type: application/vnd.example; version=1
服务器是否可以提供标记的响应
Content-Type: application/vnd.example; version=2
但是响应的主体实际上被编码为媒体类型application/vnd.example; version=1?即响应的media-type参数是响应正文的不准确描述?
似乎 Spring MVC 4.1.0 在进行内容协商时不尊重媒体类型参数,并给出响应的媒体类型参数是响应正文的不准确描述的响应。这似乎是因为org.springframework.util.MimeType.isCompatibleWith(MimeType) 方法没有检查MimeType 对象的参数。
【问题讨论】:
标签: http spring-mvc content-negotiation