因此,Accept标头告诉服务器浏览器正在寻找的资源的MIME类型。例如,服务器可以发送纯文本,HTML,JSON等。

确定,这很有意义,但是当我查看Content-Type标头时,它似乎在做同样的事情。例如,它告诉服务器它需要文本或JSON。

那么AcceptContent-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 楼



接受:浏览器可以提取的内容,例如人们可以理解的所有语言。

内容类型:实际数据的格式,例如某人说什么语言。由于计算机无法(嗯,现在它们可以)识别其他类型,例如人们可以说“哦,他是德国人!”或“她在说中文!”


评论


不一定是浏览器,而是任何http客户端。

– Jim Aho
18年11月30日在15:04

#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 楼

Accept


Accept请求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)