《HTTP》初识与摘要
基础知识
HTTP
HTTP,是Hyper Text Transfer ProTocol的简写,中文名叫做:超文本传输协议,是实现了web服务器和客户端之间的通信,是互联网上最广泛的通讯协议,换句话说,就是平台访问网页,请求信息,提交表单等等都是通过的http协议;
HTTP的每一个请求都是独立的,相互之间没有办法获取信息,或者说是没有办法存储状态,在实际情况中,登录前和登录后,开通会员和未开通会员等等这些状态对网页产生的影响明显不同,因此为了存储状态以便有更好的用户体验便有了:Cookie,Session,Local Storage;
HTTPS
HTTPS,是Hyper Text Transfer ProTocol over SecureSocket Layer的简写,中文叫做:超文本传输安全协议;HTTPS也是基于HTTP进行传输数据,区别在于:HTTPS会使用SSL(安全套接字协议)/TLS(传输层安全性协议)对发送的数据进行加密,实际开发中主要应用于比较敏感的通讯,例如:支付交易等;
常用请求方法
GET(最常用)
请求类型是:GET,代表请求指定的页面信息,并返回实体主体;
PSOT(最常用)
请求类型是:POST,想指定资源提交数据进行处理请求,比如填写了一个表单,按后台指定格式将数据向服务器地址提交;
PUT
请求类型是:PUT,从客户端向服务器传输的数据取代指定的文档内容;
DELETE
请求类型是:DELETE,请求服务器删除指定的内容;
**注意:**提交数据时具体使用的方法,通常是定义接口的人决定的,比如后台开发者会定义好需要使用什么样的请求方法提交数据,前端开发人员在提交数据时,必须严格遵守需求,如果定义了使用的是GET请求获取数据,那就必须使用GET请求获取,不能私自改成POST;
报文
什么是报文
简单的说:就是指定格式的多行数据,组成的字符串文本,用于客户端和服务器之间的数据通信;
报文又分:请求报文和响应报文,请求报文是客户端向服务器请求数据是发送的,响应报文是服务器得到请求后,向客户端回应发送的,请求报文的格式包含:请求行+请求头+请求体,响应报文的格式包含:响应行+响应头+响应体
**
请求报文
示例
下例是从网上找到的图片
①是请求方法,最常用的就是上文注释的GET和POST。
②是请求对应的URL地址,它和报文头的Host属性组成完整的请求URL(不清楚什么是host的,可以打开网页控制台,输入location.host打印一下看看);
③是协议名称及版本号。
以上内容组成了请求行
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
⑤是报文体,它和报文头之间是有一行空行的,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。
对上文图片进行归类之后,可以得到大致的一张结构图
请求头
通过示例知道,请求头是由键值对组成的,而它的属性名一般包含以下内容:
- Cookies:在发送请求的时候,HTTP会将保存在该域名下的所有Cookie值都发送到服务端;
- Accept-XXX:指定客户端可以接收的内容类型,比如上例中的Accept-language,指定语言类型是zh-CN;
- Content-Type:指定资源的类型,比如是application/json(json格式),或者是text/html(html格式),又比如是上例中的application/x-www-form-urlencoded(表单默认的提交数据的格式);
- Content-Length:请求的内容长度;
- Authorization:授权证书;
- User-Agent:用户代理;
- Referrer:链接来源地址;
响应报文
示例
①报文协议及版本;
②状态码及状态描述,从状态码代表本次请求的最终结果,其值是有规定的,不同的状态码代表不同的含义,比如最常见的404,代表页面没找到;
③响应报文头,也是由多个属性组成;
④响应报文体,同样和请求报文一样,响应报文体和报文头中间又一行空格,这部分才是我们真正需求的,是对我们的请求作出的回应,请求的内容也就是包含在这部分里;
响应头
- Server:服务器名字;
- Set-Cookie:设置和页面关联的Cookie;
- Content-Type:资源类型,和请求头中的类型一样
- Content-Length:内容长度;
- Date:当前的GMT时间;
状态码
定义
- 1xx,已接受,代表请求以及被接受,需要继续处理;
- 2xx,处理成功,代表请求已成功被服务器接收,理解,并接受;
- 3xx,重定向到其他地方,它让客户端再发起一个请求已完成整个处理;
- 4xx,处理发生错误,错误在客户端,比如请求了一个不存在的资源,客户端未被授权,禁止访问等;
- 5xx,处理发生错误,错误在服务端,比如服务器抛出异常,HTTP版本不支持等;
常见状态码:
- 200(OK):请求成功;
- 201(Created):请求以及被实现,而且又一个新的资源已经更具请求的需要而被创建;
- 301(See Over):重定向到其它地方;
- 304(Not Modified):该资源在上次请求之后没有任何修改,通常用于缓存机制;
- 400(Bad Request):语义错误或者请求参数错误;
- 403(Forbidden):客户端未能获得授权;
- 404(Not Found):在服务端没有找到请求的资源;
- 500(Internal Server Error):服务器抛出了一个异常,导致服务段无法完成对请求的处理;
浏览器查看
随便找个网站,打开控制台,找到“network”一栏,刷新页面后,可以看到所有请求,