-
HTTP协议
目录
-
HTTP概述
1)HTTP HyperText Transfor protocol(超文本传输协议)。
2)HTTP协议规定了浏览器和服务器之间交互数据的格式。在浏览器和服务器建立链接之后,可以依照协议进行数据交互。
3)~OSI网络七层模型:
应用层(HTTP、FTP、SMTP、POP3、TELNET)->表示层->会话层->传输层(TCP、UDP)->网络层(IP)->数据链路层->物理层
-
HTTP协议概念
基于请求响应模型。
一次请求对应一次响应。
请求只能由浏览器发出,服务器根据请求作出响应。
-
HTTP协议版本
1)HTTP/1.0
在浏览器和服务器建立链接之后,浏览器发送一次请求, 服务器作出一次响应,链接立刻断开。
2)HTTP/1.1
在浏览器和服务器建立链接之后,浏览器可以连续发送多次请求,服务器会依次作出响应。在等待一段时间时候,如果没有更多的请求发出,则链接断开。
3)问题:一个web页面中,使用img标签引用了三幅图片,当浏览器访问服务器中的这个web页面时,浏览器总共会访问几次服务器,即向服务器发送了几次HTTP请求。
访问页面一共需要4次请求,一次请求HTML页面,三次请求img图片。
由于是HTTP/1.1协议,所以只需要建立一次链接。
-
HTTP请求
请求的组成的四部分:
请求行 | GET /login/1.html HTTP/1.1 |
多个请求头 | Host: localhost Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 |
一共空行 |
|
请求实体内容 | 请求参数 |
1)请求行
请求方式:一共有:7种 POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的有两种:get post
get :参数拼接在地址栏 不安全 请求地址长度不能超过1kb
post:参数在底层以流的形式传输 安全 在理论上传输的参数长度不受限
2)请求资源:
/login/1.html 由web应用的虚拟路径和web资源名组成
3)请求实体内容:请求参数
如果以post请求发送参数,则参数会进入请求实体内容中,以键值对的形式存在。
只有一种形式为post请求:在使用form表单时,将提交方式method改为post。其他情况都是get请求。
-
HTTP请求的细节——消息头
用于HTTP请求中的常用头
Accept: text/html,image/* 通知浏览器可以接受什么数据 现在表示接收文本数据,任意格式的图片数据
Accept-Charset: ISO-8859-1
Accept-Encoding: gzip,compress 发送数据的压缩格式
Accept-Language: en-us,zh-cn 语言
Host:www.baidu.com 请求的地址,可以通过观察Host头来确定访问对应地址服务器上的哪个虚拟主机。
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 与响应头last modified呼应
Referer: http://www.baidu.com/index.jsp 防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie:SS=Q0=5Lb_nQ; path=/search
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT
-
HTTP响应
响应组成的四部分:
协议版本 状态码 原因叙述
状态行 | HTTP/1.1 200 OK |
多个响应头 | Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Language: en Content-Length: 979 Date: Wed, 07 Aug 2019 08:25:40 GMT |
一个空行 |
|
响应实体内容 | 响应结果---页面组成 |
1)状态行
2)状态码:302 + location 请求重定向
304 307 缓存
404 访问资源路径不存在
500 502 503 505 服务器报错
3)响应实体内容:
用于存储响应结束数据的一个缓冲区。常用于存储响应的HTML页面组成,也会存储一些响应结果数据
-
HTTP响应细节——常用响应头
HTTP响应中的常用响应头
Location: http://www.baidu.com/index.jsp 配合302实现请求重定向
Server:apache tomcat 服务器类型
Content-Encoding: gzip 服务器发送数据的压缩格式
Content-Length: 80 发送数据的长度
Content-Language: zh-cn 发送数据的语言环境
Content-Type: text/html; charset=GB2312 可接受数据格式和语言
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 与请求头的if modified since头呼应
Refresh: 1;url=http://www.it315.org 定时跳转 经过1秒后跳转到url地址。
Content-Disposition: attachment;filename=aaa.zip
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
ETag: W/"83794-1208174400000"
Expires: -1 通知浏览器是否缓存当前资源,如果这个头的值是一个以毫秒为单位的值就是通知浏览器缓存资源到指定的时间点,如果值是0或-1则是通知浏览器禁止缓存。HTTP/1.0
Cache-Control: no-cache 通知浏览器是否缓存的头 HTTP/1.1 max-Age=5 (秒)
Pragma: no-cache 通知浏览器是否缓存的头 HTTP/1.0
Connection: close/Keep-Alive
Date: Tue, 11 Jul 2000 18:23:51 GMT