Emi*_*and 24 rest http-headers
我知道该Accept参数定义了从服务器发送的客户端响应中所期望的数据类型,因此它被用作响应头.
我的问题是有关Content-type,它的使用由客户来定义发送的请求的主体格式,我一直把它作为一个客户端请求的一部分,所以我必须在我与设置的标头的客户端请求Accept和Content-type.最近,我遇到了一个项目,其中Content-type在响应标头中定义(因此由服务器发送).所以我的问题是:Content-type需要设置为客户端请求标头的一部分或作为服务器响应标头的一部分,还是可以设置为两者?
Mur*_*HAN 12
MDN 对此给出了明确的解释:
Accept 请求 HTTP 标头通告客户端能够理解哪些内容类型(以 MIME 类型表示)。使用内容协商,服务器然后选择其中一个建议,使用它并通过 Content-Type 响应标头通知客户端其选择。浏览器根据请求完成的上下文为此标头设置足够的值:在获取 CSS 样式表时,为请求设置的值与获取图像、视频或脚本时的值不同。
Content-Type 表示标头用于指示资源的原始媒体类型(在应用于发送的任何内容编码之前)。
在响应中,Content-Type 标头告诉客户端返回内容的实际内容类型。在某些情况下,浏览器会进行 MIME 嗅探,但不一定会遵循此标头的值;为了防止这种行为,可以将标头 X-Content-Type-Options 设置为 nosniff。
在请求(例如 POST 或 PUT)中,客户端告诉服务器实际发送的数据类型。
小智 9
HTTP客户端使用Accept标头告诉服务器他们期望/喜欢哪种类型的内容作为响应.客户端和服务器既可以使用内容类型来标识其请求(客户端)或响应(服务器)中的数据格式,也可以帮助其他部分正确解释信息.
TL; 博士
实体头Content-Type用于指示资源的媒体类型。在响应中,Content-Type标头告诉客户端返回内容的内容类型实际上是什么。在请求中,例如 POST 或 PUT,客户端告诉服务器实际发送的数据类型。
详细回答
正如您正确地注意到的,AcceptHTTP 客户端使用标头来告诉服务器哪些响应媒体类型是可接受的。反过来,服务器将发回一个响应,其中将包含Content-Type告诉客户端实际返回的媒体类型的标头。
现在,Content-Type标头也可以在请求和响应中。为什么?好吧,想想 POST 或 PUT 请求。对于这些请求类型,客户端实际上是将一堆数据作为请求的一部分发送到服务器,并且Content-Type标头告诉服务器数据实际上是什么,从而确定服务器将如何解析它。
内容协商: 是用于在同一 URI 上提供资源的不同表示的机制。
Accept is Client请求头字段可用于指定响应可接受的某些媒体类型。
Content -Type是实体头字段指示发送给接收者的实体主体的媒体类型。
HTTP 标头字段提供有关请求或响应或有关消息正文中发送的对象的必需信息。HTTP 消息头有四种类型:
https://www.w3.org/Protocols/HTTP/HTRQ_Headers.html
https://www.w3.org/Protocols/HTTP/Object_Headers.html
| 归档时间: |
|
| 查看次数: |
36570 次 |
| 最近记录: |