【问题标题】:HTTP status code for unaccepted Content-Type in request请求中未接受的 Content-Type 的 HTTP 状态代码
【发布时间】:2012-08-12 00:20:54
【问题描述】:

对于某些资源,我的 RESTful 服务器仅接受带有 JSON 对象作为内容主体的 PUTPOST 请求,因此需要 Content-Typeapplication/json 而不是 application/x-www-form-urlencodedmultipart/form-data 或其他任何内容.

格式错误的 JSON(或缺少格式)返回 400,错误消息直接取自 JSON 解析器引发的异常,用于调试目的。

哪个 HTTP 错误代码意味着客户端发送了一个带有不可接受的Content-Type 的请求,即使服务器在技术上可以解析请求内容?

【问题讨论】:

标签: http rest mime-types http-status-codes http-request


【解决方案1】:

根据此列表,它可能是415 Unsupported Media Typehttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.16

【讨论】:

  • 我仍然想知道“不接受的内容类型”和“不支持的媒体类型”之间是否存在差异——实际内容(可能与声明的内容不同)与预期内容不匹配.
  • 415 是正确的,但你不应该使用 RFC 2616;它已被 RFC 7231 淘汰。
  • 415 Unsupported Media Type 表示客户端以服务器不支持的格式提供数据(如请求的Content-Type 标头所示)。例如,尝试使用application/xml 格式的资源创建User 类型的记录的POST 请求,但服务器无法处理该资源类型的XML 请求。 406 Not Acceptable 表示传入的请求需要服务器无法提供的特定格式的响应数据(如 Accept 标头所示)(例如,当服务器仅提供 JSON 时,需要 XML 格式的记录)。
  • 仔细解析 7231 的语言(2616 已被取代)另有说明“415(不支持的媒体类型)状态码表明源服务器拒绝为请求提供服务,因为有效负载的格式为此方法在目标资源上不支持。格式问题可能是由于请求指示的 Content-Type 或 Content-Encoding,或者是直接检查数据的结果。 - 仔细阅读。 415被广泛认为(不正确的IMO)是适当的,但事实并非如此。方便使用是一件事;可证明的正确性是另一个
猜你喜欢
  • 2016-04-15
  • 2012-07-12
  • 2012-08-20
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
相关资源
最近更新 更多