Accept
标头告诉服务器浏览器正在寻找的资源的MIME类型。例如,服务器可以发送纯文本,HTML,JSON等。确定,这很有意义,但是当我查看
Content-Type
标头时,它似乎在做同样的事情。例如,它告诉服务器它需要文本或JSON。 那么
Accept
和Content-Type
HTTP标头有什么区别?#1 楼
正如您正确指出的那样,HTTP客户端使用Accept标头告诉服务器它们将接受什么内容类型。然后,服务器将发回一个响应,该响应将包含一个Content-Type标头,该标头告诉客户端返回的内容的实际内容类型是什么。还包含Content-Type标头。为什么?好吧,考虑一下POST或PUT请求。使用这些请求类型,客户端实际上是作为请求的一部分向服务器发送一堆数据,Content-Type标头告诉服务器数据实际上是什么(从而确定服务器如何解析数据)。 br />特别是,对于由HTML表单提交产生的POST请求,该请求的Content-Type(通常)将是下面的标准表单内容类型之一,由
enctype
属性指定<form>
标签:application/x-www-form-urlencoded
(默认,较旧,更简单,对于少量的简单ASCII文本,开销较小,不支持文件上传)multipart/form-data
(更新,增加了对文件上传的支持,对于大量的二进制数据或非ASCII文本更有效)#2 楼
接受:浏览器可以提取的内容,例如人们可以理解的所有语言。
内容类型:实际数据的格式,例如某人说什么语言。由于计算机无法(嗯,现在它们可以)识别其他类型,例如人们可以说“哦,他是德国人!”或“她在说中文!”
#3 楼
接受就像这是我的请求,我想(接受)这种响应格式
Content-Type就像
这是我的请求(或响应),而这(内容类型)是我在请求(或响应)中发送的内容的格式
评论
我知道我来晚了,但很好奇,如果服务器未以“接受”格式发送响应格式,会发生什么情况?
–尖叫
18年4月25日在18:17
这将由客户端决定@shriek。我猜想大多数http客户端(或浏览器)都会“智能地”查看实际数据并查看其真实含义。如果应该是JSON,也许一个客户端也可能会拒绝响应,但是解析失败,因为它似乎是另一回事。
– Jim Aho
18年11月30日在15:07
#4 楼
这是一个请求-响应对话,因此客户端发送“ Content-Type”请求,并且
期望接收“ Accept”媒体类型的响应。
评论
@darron不,这个答案是正确的。他不是在说它不是一个请求头,而是在说它的目的是告诉服务器它希望返回什么样的响应。其他答案有点多余,但我认为这是最简洁的。 +1。
–托德·梅尼尔(Todd Menier)
17年9月29日在21:07
#5 楼
AcceptAccept请求HTTP标头通告客户端可以理解的内容类型,以MIME类型表示。然后,使用内容协商,服务器选择建议之一,使用建议,并通过Content-Type响应标头将其选择通知客户端。浏览器根据完成请求的上下文为此标头设置足够的值:获取CSS样式表时,为请求设置的值与获取图像,视频或脚本时的请求值不同。
(来源:developer.mozilla.org)
Content-Type
Content-Type实体标头用于指示广告的媒体类型资源。
作为响应,Content-Type标头告诉客户端返回的内容的内容类型实际上是什么。在某些情况下,浏览器将执行MIME嗅探,并且不一定遵循此标头的值;为防止此行为,可以将标头X-Content-Type-Options设置为nosniff。
在请求(如POST或PUT)中,客户端告诉服务器实际上是什么类型的数据已发送。
(来源:developer.mozilla.org)
评论
不一定是浏览器,而是任何http客户端。
– Jim Aho
18年11月30日在15:04