HTTP 报文介绍
来源:互联网 发布:unity3d webgl 编辑:程序博客网 时间:2024/06/06 03:14
ps :本文仅参考
对于较大的文件我们可以直接用FTP协议传文件,较小的文件则可以向B / S 一样用HTTP上传。
首先,由于要传文件,我们需要用 POST 来发送数据。GET 有长度限制,而且数据跟在URL后面。
既然要发送POST请求,我们先来看看POST 请求的报文格式。
HTTP 报文介绍
先写一个简单的Html 页面发送一个表单来观察它发出的POST 报文,表单中包含一个上传的文件和文件描述的文本。
请求报文的起始行格式为<method> <request-URL> <version>
请求URL:为资源的绝对路径,这里是表单Action决定的。
版本:保报文所使用的Http 版本,如1.1 ,1.0。
HTTP 首部块
可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号( : ),然后是一个可选的空格,接着是一个值,最后是一个CRLF( /r/n )。首部是由一个空行(CRLF)结束的。表示了首部列表的结束和实体主体部分的开始。在自己构造报文时一定要注意加换行和空行,以免造成格式错误。在HTTP 1.1 中,要求有效的请求或响应中必须包含特定的首部。请求首部如下:
Host:接收请求的服务器地址
Connection:允许客户端和服务器指定与请求/响应连接有关的选项,Keep-alive 表示持久连接
Content-Length:实体主体的大小,这个在构造报文的时候一定要设置
CacheControl:控制缓存的行为
Accept:用户代理可处理的媒体类型
User-Agent:HTTP客户端程序的信息,浏览器的信息
Content-Type:实体主体的媒体类型,表单中有文件上传应设置为multipart/form-data。boundary 很重要,这是一个识别文件流的边界,用来标识文件开始和结尾的位置。
Accept-Encoding:是浏览器发给服务器,声明浏览器支持的编码类型
Accept-Language声明浏览器支持的语言
HTTP 数据主体
这部分为HTTP要传输的内容。
开始的boundary 就是在Content-Type中设置的值,boundary用于作为请求参数之间的界限标识,在多个参数之间要有一个明确的界限,这样服务器才能正确的解析到参数。它有格式要求,开头必须是--,不同的浏览器产生的boundary也不同,但前面都要有-- 。
Content-Disposition就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名。
中间的就是我们传输的数据了。
最后还要加上一个boundary--,不要忘记最后的--。
这样报文就构造结束了。
- http请求报文介绍
- HTTP 应答报文介绍
- http请求报文介绍
- http请求报文介绍
- HTTP 报文介绍
- HTTP报文介绍
- 《3》Http报文简单介绍
- HTTP报文
- HTTP报文
- HTTP报文
- Http报文
- HTTP报文
- HTTP报文
- HTTP报文
- HTTP报文
- Http 报文
- http报文
- HTTP报文
- apk反编译
- pyspark调用jupyter notebook
- Android性能优化典范(一)
- CVE-2011-0073浅析-firefox释放重引用漏洞
- Vue.js开发环境搭建-新建项目
- HTTP 报文介绍
- 在C#客户端用HTTP上传文件到Java服务器
- PHP的线程安全与非线程安全版本的区别
- POJ-----2549---Sumsets---二分
- getline()和get()
- Python 中的基本文件操作
- Linux环境下Weblogic部署应用的一些问题
- Servlet
- PCA原理