Content-Type in Content协商

时间:2018-01-26 12:43:39

标签: json rest http http-headers http-status-code-406

我无法理解HTTP协议中的内容协商。

据我所知,当在请求中发送头部接受时,它告诉服务器它希望以该格式响应。

例如,如果Header Accept的值为application/json,则服务器必须以JSON格式发送响应。如果它不能这样做,它会发送HTTP错误406 Not Acceptable(尽管大多数Web应用程序都不会这样做,因为最终用户不会理解想要发生。这在文档https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406中指定) 。

我的问题是请求在标头Content-Type中发送它打算在响应中接收资源表示的格式,并且服务器应用程序尊重此机制(内容协商)然后响应的标头Content-Type必须具有相同的值,否则必须返回HTTP错误406 Not Acceptable

1 个答案:

答案 0 :(得分:1)

HTTP规范says

  

如果存在Accept头字段,并且服务器无法根据组合的Accept字段值发送可接受的响应,则服务器应该发送406(不可接受)响应。

请注意"SHOULD"表示:

  

这个词,或形容词“推荐”,意味着在特定情况下可能存在忽略特定项目的正当理由,但在选择不同的课程之前必须理解并仔细权衡全部含义。

所以你认为不正确。