我是否需要http get请求的内容类型?

问题描述 投票:122回答:5

据我所知,有两个地方可以设置内容类型:

  1. 客户端为他发送给服务器的主体设置内容类型(例如发布)
  2. 服务器为响应设置内容类型。

这是否意味着我不必或不应该为我的所有获取请求(客户端)设置内容类型。如果我可以或应该采用什么内容类型?

另外,我在一些帖子中读到,客户端的内容类型指定了客户端希望接收的内容类型。也许我的观点1不对?

http get content-type
5个回答
85
投票

根据RFC 7231 section 3.1.5.5

生成包含有效负载主体的消息的发送方应该在该消息中生成Content-Type标头字段,除非发送方不知道所包含的表示的预期媒体类型。如果Content-Type头字段不存在,则接收者可以采用媒体类型“application / octet-stream”([RFC2046], Section 4.5.1)或检查数据以确定其类型。

这意味着只应为Content-TypePUT请求设置POST HTTP标头。


63
投票

获取请求不应该具有内容类型,因为它们没有请求实体(即正文)


27
投票

GET请求可以有“Accept”标头,表示客户端理解的内容类型。然后,服务器可以使用它来决定要发回的内容类型。

但它们是可选的。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1


19
投票

接受的答案是错误的。引用是正确的,PUT和POST必须拥有它的断言是不正确的。不要求PUT或POST实际上有其他内容。也没有禁止GET实际拥有内容。

RFC确切地说明了它们的意思.. IFF你的身边(客户端或原始服务器)将发送额外的内容,除HTTP标头之外,它应该指定Content-Type标头。但请注意,允许省略Content-Type并且仍然包含内容(例如,通过使用Content-Length标头)。


-1
投票

不在GET消息上传递内容类型的问题是确保内容类型无关紧要,因为服务器端无论如何都要确定内容。我遇到的问题是,现在有很多地方设置他们的网络服务足够聪明,以获取您传递的内容类型并返回您请求的“类型”中的响应。例如。我们目前正在使用默认为JSON的地方进行消息传递,但是,他们已经设置了他们的web服务,这样如果你传递一个内容类型的xml,他们将返回xml而不是他们的JSON默认值。我认为前进是一个好主意

© www.soinside.com 2019 - 2024. All rights reserved.