gpt4 book ai didi

http 接受和内容类型 header 混淆

转载 作者:可可西里 更新时间:2023-11-01 17:34:00 25 4
gpt4 key购买 nike

这是传输到 Web 服务器的 HTTP 请求消息的示例。在 header 内部有一个 Accept header 。我对它的含义及其创建方式感到困惑。我认为它只指定了我的浏览器处理文件的能力。但这并不能解释为什么当我访问 amazon.com 或 joes-hardware 时它会有所不同。

还有 Content-Type header ,这是它请求的文件的 MIME。同样的问题。我的浏览器如何知道它请求的文件类型是什么?它是基于我请求的 URI 扩展还是这是一个通用 header ? 这个 header 似乎只在响应 header 中发送。我的错。

GET /tools.html HTTP/1.0
User-agent: Mozilla/4.75 [en] (Win98; U) Host: www.joes-hardware.com
Accept: text/html, image/gif, image/jpeg
Accept-language: en

最佳答案

要事第一:AcceptAccept-Language是在 RFC 7231, section 5.3.2 中定义的 header 和 section 5.3.5 , 分别。连同Accept-* header ,它们通过客户端启用内容协商。在 Mozilla Development Network 上有一篇关于内容协商的优秀文章. (旁注:MDN 是研究的极好起点。很多文章已经过时,但概念在很大程度上仍然有效)

Accept-Language的内容主要由客户端 UI 的语言设置控制。 Mozilla 的 Firefox(以及 - IIRC - Opera 和 Safari)允许通过其设置调整这些,而 MSIE 似乎从系统中安装的键盘布局中扣除它们。请求的媒体类型中没有任何内容会影响此 header 。

Accept的内容另一方面, header 在很大程度上取决于请求资源的上下文。例如。如果您通过浏览器的地址栏请求资源,Accept标题读起来很像“给我任何我能消化的东西”。如果浏览器通过 <img/> 请求资源-tag, header 将有所不同,因为浏览器正在尝试获取适合在该标签内显示的所请求资源的表示。同样适用于 <video/> , <audio/> , 和 <script/> .

除此之外,我不知道有任何机制会影响 Accept header 。 <a/> - 标签有 - 大多数人都不知道 - type 携带 MIME 媒体类型的属性。然而,这是一种后备机制,不应改变 Accept以任何方式。

对于您的示例,我冒昧地请求了两个站点并复制了相关的请求 header :

亚马逊网站

GET / HTTP/1.1
Host: www.amazon.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

joes-hardware.com

GET / HTTP/1.1
Host: www.joes-hardware.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

请求 /tools.html 时 header 没有区别在最后一个例子中。

关于http 接受和内容类型 header 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37060730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com