`
darkjune
  • 浏览: 309894 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Http服务器如何在HTTP response中传送二进制图片

    博客分类:
  • HTTP
阅读更多

要想知道如何传送这些二进制,先来点二进制文件的背景知识

 

 —文件魔数 magic number:

操作系统的文件,其起始的几个字节的内容是固定的。根据这几个字节的内容就可以确定文件类型,因此这几个字节的内容被称为魔数 (magic number), 对于GIF,JPG这种二进制跨系统都是支持的(linux/Windows),对于.exe .bin这类操作系统相关的就不一样了。

 

如何查看? 用UltraEdit直接以二进制方式打开这些文件。

常见魔数

—JPEG (jpg),文件头:FFD8FF 

—PNG (png),文件头:89504E47 

—GIF (gif),文件头:47494638

—ZIP Archive (zip),文件头:504B0304

 —Java Class ,  文件头:CAFEBABE

 

 我们使用Fiddler截获浏览器的HTTP响应,可以看到请求的是一个PNG图片:

GET /**/bg-header.png

为了方便查看,将响应头调成16进制模式。

 绿色的字都是标准的HTTP响应头(response head),然后根据HTTP/1.1标准,响应头之后跟上0D0A, 0D0A

这个就是系统的换行符, 是windows标准的\r\n,响应头跟image的实际二进制数据间有一个空行,然后跟上实际的数据,可以看到蓝色里圈住的文件魔数是89504E47,正是PNG的文件头。为了验证这个二进制的有效性,用工具提供的更能save bytes,将二进制内容存储到本地:



 



 可以看到本地文件正是这样保存的,一个图片。这样,一个http的图片内容就这样存到了本地浏览器缓存,并由浏览器使用。

  • 大小: 386.5 KB
  • 大小: 14.9 KB
  • 大小: 14.4 KB
分享到:
评论

相关推荐

    VFP上传文件到web服务器

    在本文中,我们将深入探讨如何使用Visual FoxPro(VFP)将文件上传到Web服务器,主要涉及的技术包括XMLHTTP和XMLDOM。这两种技术是VFP与Web服务交互的重要工具,让我们一起详细了解它们。 1. Visual FoxPro(VFP)...

    web服务器实验报告1

    + 其它文件:按二进制传送 + 文件不存在:按 html 协议发送 404 消息 2. 实验原理: * 服务器就是在运行的 Java 文件,浏览器作为客户端可以访问 127.0.0.1:9999/a.htm * 本地需要有.htm, .zup, .jzup, java, ...

    Android通过POST和GET向服务器发送数据

    在Android应用开发中,与服务器交互是不可或缺的一部分。通常,我们使用HTTP协议的两种主要方法:POST和GET来传输数据。本文将详细讲解如何在Android中实现这两种方法,并讨论使用普通HTTP协议和Android内置的...

    HTTP/http协议中文手册

    在HTTP协议中,通信过程通常由客户端发起请求(Request),服务器接收请求并返回响应(Response)。请求通常包含方法(GET、POST、PUT、DELETE等)、URL、协议版本、请求头和请求主体等部分;响应则包括状态码、响应...

    springboot+FTP服务器实现远端文件上传

    服务器端的代码无需做特殊处理,因为FTP协议本身支持二进制文件(如ZIP压缩文件)和ASCII文本文件的传输。 至此,我们已经构建了一个基于Spring Boot的FTP文件上传系统,可以用于将文件(包括压缩文件和文本文件)...

    JSP隐含对象response实现文件下载的两种方法

    在JSP(Java Server Pages)中,隐含对象response经常用于控制HTTP响应,其中包括实现文件下载的功能。在进行文件下载时,通常会涉及到两种类型的文件:二进制文件和文本文件。这两种文件类型的下载方式有所不同,但...

    android websocket

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Android平台上实现WebSocket通信,需要理解和应用一些关键概念和技术...

    ASP.NET-[上传下载]ASP.NET同时上传多个文件.zip

    这段代码会在用户点击下载按钮时,触发`DownloadButton_Click`事件,设置响应的MIME类型为二进制流,添加一个附件头来指定文件名,并发送指定路径的文件内容。 在实际应用中,还需要考虑一些额外的因素,如错误处理...

    2021-2022计算机二级等级考试试题及答案No.13494.docx

    18. 服务器传送数据到浏览器:在ASP.NET中,Response对象用于将数据从服务器发送到浏览器。 19. Java关键字:false是Java中的保留字,可以作为布尔值使用。 20. Session对象有效期:默认情况下,Session对象的有效...

    java 中HttpClient传输xml字符串实例详解

    至此,我们已经成功地使用Java的HttpClient库将一个对象转换为XML字符串,并以二进制流的方式发送到了服务器。这个过程中涉及的关键技术包括对象到XML的转换(JAXB)、流操作(ByteArrayOutputStream和...

    2021-2022计算机二级等级考试试题及答案No.15503.docx

    20. 要将数据由服务器传送至浏览器,可以使用Response方法。 21. ACCESS数据库对象包括窗体、查询、报表、模块等,但不包括字段,字段是表的一部分。 22. 在Windows资源管理器中,反向选择文件的方法是CTRL+单击...

    2021-2022计算机二级等级考试试题及答案No.9975.docx

    2. 在Internet中的IP地址由32位二进制数组成,这正确地指出了IPv4地址的结构。每个IP地址由4个8位的二进制数(0-255)组成,总共32位。 3. 菜单后面带有的组合键提示,如Ctrl+P,表示可以直接按组合键执行相应的...

    2021-2022计算机二级等级考试试题及答案No.10816.docx

    **知识点说明**:在计算机科学中,一个无符号的八位二进制数(通常称为一个字节)能够表示的最大十进制数值为255(即二进制的11111111)。因此,任何超过255的十进制数都不能用八位二进制表示。 **题目分析**:选项...

    通过IO流把文件传到前端并下载.zip

    文件流(FileInputStream和FileOutputStream)用于与本地文件系统交互,而字节流(如InputStream和OutputStream)和字符流(如Reader和Writer)则用于处理二进制和文本数据。在传输文件时,我们通常会使用...

    Webservice接口开发

    这些库通常包含在 Axis2 的二进制分发包中。 ##### 3.2 示例代码 下面是一个简单的客户端示例代码,展示了如何调用服务器端的服务。 ```java import org.apache.axis2.client.Options; import org.apache.axis2....

    2021-2022计算机二级等级考试试题及答案No.369.docx

    - **知识点**: 在Web开发中,使用`Response`对象可以将数据从服务器端传送到客户端浏览器。`Response`对象中的`Write`方法用于向HTTP响应中写入字符串。但题目中询问的是整体的数据传输方式,因此正确答案是`C`即`...

    2021-2022计算机二级等级考试试题及答案No.3651.docx

    - **详细解释**: 在Internet中,IP地址由32位二进制数组成。IPv4地址的标准长度为32位,IPv6地址的长度为128位。 ### 26. 数组索引 - **知识点**: Java数组索引的使用。 - **详细解释**: 在Java中,数组索引从0开始...

    java-servlet-api.doc

    然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的...

    2021-2022计算机二级等级考试试题及答案No.10268.docx

    22. **服务器与浏览器交互**:将数据从服务器传送到浏览器通常使用`Response`对象的方法。 23. **栈与队列**:它们都限制了元素的插入和删除,只允许在特定端点操作。 24. **数组运算**:给定的Java代码片段计算了...

    2021-2022计算机二级等级考试试题及答案No.4774.docx

    13. 服务器传送数据:在Web开发中,Response对象可以用于将数据从服务器发送到浏览器。 14. WWW:WWW是World Wide Web的缩写,即万维网。 15. 软件开发效率:高效的软件开发工具和环境可以显著提高开发人员的工作...

Global site tag (gtag.js) - Google Analytics