目录
前言
提示:这里可以添加本文要记录的大概内容:
HTTP协议是超文本传输协议
HTTP的短连接:建立连接------数据传输------关闭连接
HTTP的长连接:建立连接------数据传输------(保持连接)------数据传输------关闭连接。如果长时间没有新的请求,连接才会关闭
提示:以下是本篇文章正文内容,下面案例可供参考
一、HTTP协议的基本概念
概念:HTTP协议是一个规范,规则。通过这个规则实现客户端与服务器之间的各种信息的传
输,它是响应协议(客户端向服务器发送一次请求,服务器返回对应的响应,得到响
应后接收通信)
协议格式:HTTP分为请求格式和响应格式两种请求格式:客户端发送给服务端,用于请求服务器上的资源。由以下几个部分组成。
请求行:用于明确向服务器表达,自己请求的资源/功能
请求头部:对请求或正文的细致描写
空行:用于间隔头部与正文
正文:客户端向服务器发送的数据内容
响应格式:服务端发送给客户端,用于回应客户端的请求
响应行:直观向客户端描述本次请求的处理结果
响应头部:对本次响应以及正文进行额外的描述
空行:用于间隔头部与正文
正文:返回给客户端的具体数据
1.1、请求格式
请求行:用于向服务器表达、自己请求的资源
组成:包含三个元素(请求方法)、元素之间以空格间隔、以 \r\n 结尾
请求方法:用于明确当前的请求是一个怎么样的请求
GET:用于向服务器请求实体资源,请求没有正文但是可用提交数据、提交的数据
在URL中,而不是正文中,但提交的数据有限且不安全。
HEAD:与GET功能类似,但是区别在于响应中不用返回实体资源、只有头部字段
POST:用于向服务器提交数据,提交的数据在正文中。
请求头部:对请求和正文的细致描述
格式:key: val\r\nkey: val\r\n......
User-Agent: 描述客户端版本信息。服务端可以定制化响应
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type:描述正文类型,决定了正文将会被如何处理
application/x-www-form-urlencoded
Content-Length:描述正文长度
40
Referer: 告诉服务器本次请求的来源链接
https://www.baidu.com/form-page
请求空行:\r\n 间隔请求头部与正文
正文:提交给服务器的数据
URL:网址------资源定位符作用:描述如何在某个地方获取某个指定的资源
要素:http//user:pass@www.baidu.com:80/s?wd=C%2B%2b&e=utf8#ch
https://www.baidu.com:80/path/to/resourceparam1=value1\¶m2=value2#section1
http:协议名称,表示本次通信使用的是什么协议
user:访问服务器的用户认证信息的用户名
pass:访问服务器的用户认证信息的密码
baidu.com:域名,经过解析可以得到服务器的IP地址
80:http协议的默认端口是80端口,https是443端口
**/s或/path/to/resource:**请求资源的路径
**wd=C%2B%2b&e=utf8或param1=value1¶m2=value2:**查询字符串
**ch或section1:**片段标识符,通常是一个html标签的id值
协议版本:现在通常是1.1的版本
从1.0版本进程的改进,从短链接支持了长链接
1.2、响应格式
响应行:
格式:HTTP协议版本、状态码、状态消息 \r\n
1xx:信息状态码,对应请求的描述; 101--协议切换
2xx:成功状态码; 200--成功处理
3xx:重定向状态码; 302-临时重定向 301-永久重定向 303-请求其他路径
4xx:客户端错误状态码; 404-请求资源不存在
5xx:服务器错误状态码; 502-服务器请求失败 504-服务器请求超时
响应头部:对本次响应以及正文进行额外的描述
格式:key: val\r\nkey: val\r\n......
Location:当状态码为3XX时,此字段指定了客户端应进一步访问的URL。
正文:响应(返回)给客户端的数据
二、HTTP链接问题
由于HTTP的一个简单的请求,并且是短链接,每次请求服务器都不一定使用同一个链接,如果每次请求服务器都是新连接,那么如何识别客户端身份就是一个问题,为了解决这个问题提出了cookie机制
cookie:
在http协议头部中加入了两个字段:Cookie Set-Cookie
1、客户端登陆成功后、服务器通过Set-Cookie字段向客户端返回一些数据:客户端身
份及状态
2、客户端收到响应后、将Set-Cookie字段中的数据保存起来到cookie文件中
3、当客户端下次请求服务器是,就会从cookie文件中读取出cookie数据,通过Cookie
字段发送给服务器
session:
cookie是有安全隐患的它默认是明文存储,因此推出了session
会话控制---每个客户端在访问服务器后,服务器都会为其创建一个会话,这个会话是存
储在服务端上的包含了用户的会话信息,如用户身份,会话状态,偏好设置
等。当服务端响应的时候,会将session的id作为cookie数据通过Set-Cookie
字段发送给客户端,下次客户端请求服务器的时候,就会将session的id通过
Cookie发送给服务器