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

烤熟食店

我正在编写一个简单的 HTTP 服务器,它将提供来自文件系统的内容。

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

经过一番研究,我发现 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,根据我在接受标头值中看不到 MIME 类型 application/pdf 的事实来判断。

然而,当我发送 pdf 的字节以及设置为 application/pdf 的内容类型时,浏览器会神奇地显示它。

那么,我错过了什么?我原本以为浏览器可能会对URI做一些基本的推断,看看它是否以.pdf结尾,然后接受相应的MIME类型。

但是,当我通过 pdf 链接访问它时,Accept 标头保持不变。

任何帮助将非常感激。

编码器

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

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

这里相关的是RFC 7231, 5.3.2。接受

如果请求中存在标头字段并且响应的可用表示都没有列为可接受的媒体类型,则源服务器可以通过发送 406(不可接受)响应来接受标头字段或忽略标头字段,将响应视为不受内容协商的影响。

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

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

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何保存在没有URL的浏览器窗口中弹出的.pdf文件?

来自分类Dev

如何从浏览器保存.pdf?

来自分类Dev

如何在浏览器上显示pdf?

来自分类Dev

控制浏览器中流式PDF的显示

来自分类Dev

当我单击链接访问上载的PDF时,我没有得到正确的PDF。

来自分类Dev

如何在Chrome和Firefox浏览器中显示3D PDF

来自分类Dev

在浏览器上显示PDF

来自分类Dev

显示pdf交叉浏览器的最佳方法

来自分类Dev

Java Spring MVC在浏览器中显示PDF

来自分类Dev

限制浏览器中显示的PDF页数

来自分类Dev

在浏览器中打开PDF而不是下载它

来自分类Dev

如何使用浏览器在Firefox / IE / Chrome中显示ppt / doc / xls / pdf

来自分类Dev

如何从Amazon S3以PDF格式读取文件流并在浏览器中显示

来自分类Dev

在没有pdf阅读器的应用内显示pdf

来自分类Dev

如何使用Web浏览器对象显示pdf文件

来自分类Dev

当我尝试在Web浏览器中显示PDF文档时出现警告消息“ AcroPDF.dll”

来自分类Dev

如何突出显示在Web浏览器中打开的pdf中的文本

来自分类Dev

如何从浏览器保存.pdf?

来自分类Dev

阻止PDF在Google Chrome浏览器中显示

来自分类Dev

如何在浏览器上显示pdf?

来自分类Dev

PDF文件无法在浏览器中正确显示

来自分类Dev

如何使用POST方法打开新的浏览器并显示pdf?

来自分类Dev

当我单击链接以访问上载的PDF时,没有得到正确的PDF。

来自分类Dev

如何在Chrome和Firefox浏览器中显示3D PDF

来自分类Dev

显示pdf交叉浏览器的最佳方法

来自分类Dev

如何在没有pdf组件的移动浏览器中显示Base64编码的pdf

来自分类Dev

如何指定用于从浏览器保存pdf的名称

来自分类Dev

Laravel - pdf 文件的响应返回奇怪的文本,而不是在浏览器中显示 pdf

来自分类Dev

如何在浏览器中显示非公开 PDF 文件?

Related 相关文章

  1. 1

    如何保存在没有URL的浏览器窗口中弹出的.pdf文件?

  2. 2

    如何从浏览器保存.pdf?

  3. 3

    如何在浏览器上显示pdf?

  4. 4

    控制浏览器中流式PDF的显示

  5. 5

    当我单击链接访问上载的PDF时,我没有得到正确的PDF。

  6. 6

    如何在Chrome和Firefox浏览器中显示3D PDF

  7. 7

    在浏览器上显示PDF

  8. 8

    显示pdf交叉浏览器的最佳方法

  9. 9

    Java Spring MVC在浏览器中显示PDF

  10. 10

    限制浏览器中显示的PDF页数

  11. 11

    在浏览器中打开PDF而不是下载它

  12. 12

    如何使用浏览器在Firefox / IE / Chrome中显示ppt / doc / xls / pdf

  13. 13

    如何从Amazon S3以PDF格式读取文件流并在浏览器中显示

  14. 14

    在没有pdf阅读器的应用内显示pdf

  15. 15

    如何使用Web浏览器对象显示pdf文件

  16. 16

    当我尝试在Web浏览器中显示PDF文档时出现警告消息“ AcroPDF.dll”

  17. 17

    如何突出显示在Web浏览器中打开的pdf中的文本

  18. 18

    如何从浏览器保存.pdf?

  19. 19

    阻止PDF在Google Chrome浏览器中显示

  20. 20

    如何在浏览器上显示pdf?

  21. 21

    PDF文件无法在浏览器中正确显示

  22. 22

    如何使用POST方法打开新的浏览器并显示pdf?

  23. 23

    当我单击链接以访问上载的PDF时,没有得到正确的PDF。

  24. 24

    如何在Chrome和Firefox浏览器中显示3D PDF

  25. 25

    显示pdf交叉浏览器的最佳方法

  26. 26

    如何在没有pdf组件的移动浏览器中显示Base64编码的pdf

  27. 27

    如何指定用于从浏览器保存pdf的名称

  28. 28

    Laravel - pdf 文件的响应返回奇怪的文本,而不是在浏览器中显示 pdf

  29. 29

    如何在浏览器中显示非公开 PDF 文件?

热门标签

归档