浏览器如何确定Accept标头?

科雷旅

所以我在本地有这个网页:

<html>
<head>
    <title>Sample "Hello, World" Application</title>
</head>
<body bgcolor=white>
<table border="0">
    <tr>
        <td>
            <img src="images/tomcat.gif">
        </td>
        <td>
            <h1>Sample "Hello, World" Application</h1>
            <p>This is the home page for a sample application used to illustrate the
                source directory organization of a web application utilizing the principles
                outlined in the Application Developer's Guide.
        </td>
    </tr>
</table>
<p>To prove that they work, you can execute either of the following links:
<ul>
    <li>To a <a href="hello.jsp">JSP page</a>.
    <li>To a <a href="hello">servlet</a>.
</ul>
</body>
</html>

当我跟踪HTTP请求和响应时,我将看到:

GET /sample/ HTTP/1.1
Host: localhost:8080
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, lzma, sdch
Accept-Language: tr
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36 OPR/26.0.1656.24

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 636
Content-Type: text/html
Date: Fri, 28 Nov 2014 19:48:47 GMT
ETag: W/"636-1185801988000"
Last-Modified: Mon, 30 Jul 2007 13:26:28 GMT
Server: Apache-Coyote/1.1

并再次请求该图像:

GET /sample/images/tomcat.gif HTTP/1.1
Host: localhost:8080
Accept: image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, lzma, sdch
Accept-Language: tr
Referer: http://localhost:8080/sample/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36 OPR/26.0.1656.24

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 1441
Content-Type: image/gif
Date: Fri, 28 Nov 2014 19:54:55 GMT
ETag: W/"1441-1185801988000"
Last-Modified: Mon, 30 Jul 2007 13:26:28 GMT
Server: Apache-Coyote/1.1

浏览器为何发送 Accept: image/webp,*/*;q=0.8

当我单击图像本身并在新选项卡中将其打开时,请求将以以下方式发送:

GET /sample/images/tomcat.gif HTTP/1.1
Host: localhost:8080
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, lzma, sdch
Accept-Language: tr
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36 OPR/26.0.1656.24

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Length: 1441
Content-Type: image/gif
Date: Fri, 28 Nov 2014 19:55:53 GMT
ETag: W/"1441-1185801988000"
Last-Modified: Mon, 30 Jul 2007 13:26:28 GMT
Server: Apache-Coyote/1.1

为什么第二个请求在Accept标头中有更多的值,但在第一种情况下却有所不同?

它本质上是浏览器制造商希望使其易于识别支持的格式的历史记录。

正如格赖斯指出的那样,这些都包括在内*/*,因此可以接受任何东西。指定的格式仅是首选项。

在至少一种情况下:

Accept: image/webp,*/*;q=0.8

仅仅是促进WebP普及的特例。修改Accept标头以明确表示Chrome支持的图像格式

作为促进采用WebP的一部分,如果Chrome在Accept标头中更明确地指示其支持的图像格式,将很有用。当前它仅返回* / *,但是这使得服务器很难知道是否可以安全地返回WebP图像来代替JPEG。

由于Chrome显然也接受PNG,JPEG和GIF,因此使WebP成为特殊情况只是为了鼓励对首选格式的特定支持。同样,application/xhtml+xml在尝试鼓励广泛使用XHTML时,这种特殊情况很有道理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改谷歌浏览器的接受标头?

来自分类Dev

如何从CefSharp浏览器获取请求标头?

来自分类Dev

过期标头被浏览器忽略

来自分类Dev

浏览器请求标头“ Accept-Language”未发送国家

来自分类Dev

如何从浏览器中的提取请求中获取标头位置值

来自分类Dev

如何通过Windows Phone 8的网络浏览器传递自定义标头?

来自分类Dev

如何在 Phoenix 框架上设置浏览器缓存和过期标头?

来自分类Dev

其他浏览器是否会受到特定于浏览器的标头的影响?

来自分类Dev

如何确定何时关闭浏览器?

来自分类Dev

如何使页脚和标头为浏览器宽度的100%,但将所有内容保持在80%之间

来自分类Dev

如何使用无头浏览器运行Selenium Python

来自分类Dev

标头重定向在不同的浏览器中产生不同的行为

来自分类Dev

拒绝在浏览器中设置不安全的标头“ Cookie”错误,但请求成功

来自分类Dev

缓存控制响应标头不强制浏览器缓存

来自分类Dev

HTTP2标头与旧版浏览器的兼容性

来自分类Dev

Selenium获取http响应标头或访问浏览器的下载历史记录

来自分类Dev

由于浏览器缓存,PHP标头301重定向不起作用

来自分类Dev

响应中的标头重复/浏览器间歇性失败

来自分类Dev

URL中提供凭据时,为什么浏览器不发送Authentication标头?

来自分类Dev

浏览器未显示X-Forwarded-For标头的原因

来自分类Dev

Set-Cookie存在于标头响应中,但在浏览器中缺失

来自分类Dev

Bootstrap 3-标头在浏览器中具有神奇的空白

来自分类Dev

存在Access-Control-Allow-Origin标头,但浏览器拒绝XMLHttpRequest

来自分类Dev

Cookies标头存在,但Cookie未存储在浏览器中

来自分类Dev

没有任何Cache-Control标头的浏览器缓存请求/响应

来自分类Dev

哪些请求标头可用于浏览器/客户端指纹?

来自分类Dev

来自浏览器的POST数据未发送身份验证标头

来自分类Dev

浏览器扩展程序可以自动更改HTTP标头吗?

来自分类Dev

生成显示浏览器默认404页面的404标头

Related 相关文章

  1. 1

    如何更改谷歌浏览器的接受标头?

  2. 2

    如何从CefSharp浏览器获取请求标头?

  3. 3

    过期标头被浏览器忽略

  4. 4

    浏览器请求标头“ Accept-Language”未发送国家

  5. 5

    如何从浏览器中的提取请求中获取标头位置值

  6. 6

    如何通过Windows Phone 8的网络浏览器传递自定义标头?

  7. 7

    如何在 Phoenix 框架上设置浏览器缓存和过期标头?

  8. 8

    其他浏览器是否会受到特定于浏览器的标头的影响?

  9. 9

    如何确定何时关闭浏览器?

  10. 10

    如何使页脚和标头为浏览器宽度的100%,但将所有内容保持在80%之间

  11. 11

    如何使用无头浏览器运行Selenium Python

  12. 12

    标头重定向在不同的浏览器中产生不同的行为

  13. 13

    拒绝在浏览器中设置不安全的标头“ Cookie”错误,但请求成功

  14. 14

    缓存控制响应标头不强制浏览器缓存

  15. 15

    HTTP2标头与旧版浏览器的兼容性

  16. 16

    Selenium获取http响应标头或访问浏览器的下载历史记录

  17. 17

    由于浏览器缓存,PHP标头301重定向不起作用

  18. 18

    响应中的标头重复/浏览器间歇性失败

  19. 19

    URL中提供凭据时,为什么浏览器不发送Authentication标头?

  20. 20

    浏览器未显示X-Forwarded-For标头的原因

  21. 21

    Set-Cookie存在于标头响应中,但在浏览器中缺失

  22. 22

    Bootstrap 3-标头在浏览器中具有神奇的空白

  23. 23

    存在Access-Control-Allow-Origin标头,但浏览器拒绝XMLHttpRequest

  24. 24

    Cookies标头存在,但Cookie未存储在浏览器中

  25. 25

    没有任何Cache-Control标头的浏览器缓存请求/响应

  26. 26

    哪些请求标头可用于浏览器/客户端指纹?

  27. 27

    来自浏览器的POST数据未发送身份验证标头

  28. 28

    浏览器扩展程序可以自动更改HTTP标头吗?

  29. 29

    生成显示浏览器默认404页面的404标头

热门标签

归档