代码之家  ›  专栏  ›  技术社区  ›  toastedDeli

当我的浏览器没有指定它将接受的pdf时,它如何显示pdf?

  •  0
  • toastedDeli  · 技术社区  · 7 年前

    对于客户端和服务器如何协商内容类型,我有点困惑。

    在做了一些研究之后,我发现Content Type指定了正在发送的HTTP消息的内容类型,而Accept标头指定了程序预期作为响应接收的内容。

    当我从浏览器访问服务器并读取初始GET请求时(当使用空URI访问时),我得到以下结果:

    GET / HTTP/1.1
    Host: 127.0.0.1:1234
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    

    如您所见,accept头并没有指定它将接受pdf,这是由我在accept头值中看不到MIME类型的application/pdf这一事实判断的。

    那么,我错过了什么?我最初认为浏览器可能会对URI进行一些基本推断,看看它是否结束了URI。pdf,然后接受相应的MIME类型。

    任何帮助都将不胜感激。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Community CDub    3 年前

    我正在编写一个简单的HTTP服务器

    然后,您应该学习如何绕过描述HTTP的各种RFC。

    与此相关的是 RFC 7231, 5.3.2. Accept :

    如果标题字段为 在请求中显示,但没有可用的表示 响应的媒体类型被列为可接受 源服务器可以通过发送406(非 可接受)通过处理 回复,就好像它不受内容协商的约束一样。

    原则上,浏览器希望显示HTML格式的文档,无论服务器愿意为(X)HTML的任何变体提供服务,因此默认情况下,它会发送您观察到的accept标头。

    但是,如果请求是另一种资源,服务器可以自由地使用该类型的内容进行响应。

    推荐文章