HTTP协议是应用层协议,client-server协议,且HTTP是无状态协议,有会话。在同一个连接中,两个执行成功的请求之间是没有关系的。
HTTP 的报文结构,由以下部分组成︰
一行起始行:用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。
一个可选的HTTP头:集合指明请求或描述消息正文。
一个空行:指示所有关于请求的元数据已经发送完毕。(区分请求头和请求体)
一个可选的包含请求相关数据的正文 (比如HTML表单内容):, 或者响应相关的文档。 正文的大小有起始行的HTTP头来指定。
起始行和 HTTP 消息中的HTTP 头统称为请求头,而其有效负载被称为消息正文。
mozilla HTTP Messages
请求报文
HTTP请求报文- 请求行(request line):请求方法(get,post),请求url,http协议版本
- 请求头(request header):User-Agent:产生请求的浏览器类型,Accept:客户端可识别的内容类型列表,Host:主机地址
- 空行
- 请求体(request body):post请求中会以key value形式发送数据
请求报头域
2.响应报文
image.png参考
- HTTP请求报文区分body和header的作用
1.客户端设置特定的header进行内容协商
内容协商
资源访问的时候,资源的特定展现形式由内容协商机制来决定。
比如:一个URL对应一个pdf文件资源,这个pdf是返回一个服务端的地址,还是直接返回文件二进制流,可以通过内容协商后确定。
内容协商相关请求头:(Accept
、Accept-Charset
、Accept-Encoding
、Accept-Language
Vary
)
内容协商
- 相关名词
Data URL:data:[<mediatype>][;base64],<data> (用base64数据格式插入一个文件,可以制定)
MIME(媒体类型):浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL,因此Web服务器在响应头中添加正确的MIME类型非常重要。如果配置不正确,浏览器可能会曲解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。
网友评论