【问题标题】:Does a Content-Type header on a GET request ever cary semantic meaning?GET 请求上的 Content-Type 标头是否具有语义含义?
【发布时间】:2014-10-08 15:13:20
【问题描述】:
所以我卷入了关于 GET 请求中 Content-Type 标头的适当解释的讨论。我计划在对服务的所有 GET 请求中丢弃 Content-Type 标头的值,因为虽然 GET 请求可以包含主体,但 GET 请求的服务器语义受到限制,因此主体没有语义意义到请求。
那么,GET 请求的 Content-Type(可能包含也可能不包含消息体)是否有任何语义含义?
我可以安全地丢弃它吗,还是我忽略了什么?
【问题讨论】:
标签:
rest
content-type
http-get
【解决方案1】:
GET 请求的Content-Type 没有用,通常不会发送。正如您所说,如果没有内容,则指定的类型无关紧要。
相反,Accept 标头告诉您客户端期望的回报。
【解决方案2】:
RFC 2616 Section 4.3 状态:
请求中存在消息体由
包含 Content-Length 或 Transfer-Encoding 标头字段
请求的消息头。 消息正文不得包含在
请求方法的规范(第 5.1.1 节)
不允许在请求中发送实体主体。服务器应该
根据任何请求阅读和转发消息正文;如果请求方法
不包括实体主体的定义语义,则
处理请求时应该忽略消息正文。
GET 请求没有为消息体定义任何语义,因此消息体及其伴随的Content-Type(如果存在)将被忽略。