HTTP协议
HTTP英文全称是Hypertext Transfer Protpcol,也就是超文本传输协议。就是定义客户端于服务器端进行通讯的格式。
HTTP使用请求-响应的方式进行传输,一个请求只能对应一个响应,并且请求只能由客户端发起的。
如图所示:
HTTP请求 ![](https://img2018.cnblogs.com/i-beta/1749742/201911/1749742-20191107163409650-2093917350.png)
客户端连接服务器之后,想服务器请求某个web资源,称之为客户端向服务器发送一个http请求,一个完整的http请求内容包括:一个请求行、若干请求头、请求体。
请求行:
例如:POST /Demo01/user.html HTTP/1.1
格式:请求方式 资源路径 协议/版本
请求行必须在http请求格式的第一行。
常见的请求:get请求,post请求
get请求:
将请求参数追加在url后面,不安全,url长度限制get请求方式数据的大小,没有请求体,一般的HTTP请求大多都是GET。
post请求:
请求参数在请求体处,较安全。请求数据大小没有显示,只有表单设置为method=“post”才是post请求,其他都是get请求
常见get请求:地址栏直接访问、<a href="">、<img src="">等
请求头:
例如:Host: 127.0.0.1:8080
请求头从第二行开始,到第一个空格结束。请求头和请求体之间存在一个空格。
常见请求头:
Referer:表示这个请求是从哪个url跳过来的,通过百度来搜索淘宝网,那么在进入淘宝网的请求报文中,Referer的值就是:www.baidu.com。如果是直接访问就不会有这个头。常用于:防盗链。
Accept:告诉服务端,该请求所能支持的响应数据类型,专业术语称为MIME 类型(文件类型的一种描述方式)
MIME格式:大类型/小类型[;参数]
例如:
text/html ,html文件
User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息
if-Modified-Sincce:浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存
Cokkie:客户端的Cookie就是通过这个报文头属性传给服务端的!
Host:请求的服务器主机名
Content-Type:请求的与实体对应的MIME信息。如果是post请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭
请求体
当请求方式是post的时,请求体会有请求的参数,格式如下:
username=zhangsan&password=123
HTTP响应
HTTP的响应报文也由三部分组成(响应行+响应头+响应体)
响应行:
①报文协议及版本;
例如:
HTTP/1.1 200 OK
②状态码及状态描述;
常用的状态码如下:
200 :请求成功。
302 :请求重定向。
304 :请求资源没有改变,访问本地缓存。
404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。
500 :服务器内部错误。通常程序抛异常。
响应头:
响应报文头,也是由多个属性组成;
响应头也是用键值对k:v
服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同
响应体:
服务器发送给浏览器的正文,即我们真正要的“干货” ;
响应体是服务器回写给客户端的页面正文,浏览器将正文加载到内存,然后解析渲染 显示页面内容