HTTP使用指南|青训营笔记

90 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

一、初识HTTP

1、Hyper Text Transfer Protocol :全称超文本传输协议。
2、是一种应用层协议,是基于 TCP/IP 通信协议 来传递数据的。
3、优点:

简单:协议比较简单,它的主要组成就是 header + body,头部信息也是简单的文本格式。
可扩展:http中的请求方法、URI、状态码等核心组成要素都没有被完全制定,因此允许开发者任意定制、扩充或解释,给予了浏览器和服务器最大程度的信任和自由。
无状态:无需额外资源来记录状态信息,可以有效减轻服务器的压力。

二、协议分析

1、状态码:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。

image.png 以下是见得比较多的状态码:
200:成功状态码。
400:客户端请求报文有错误。
403:服务器禁止访问资源,并不是客户端的请求出错。
404:请求的资源在服务器上不存在或未找到。

2、请求头

HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。

Accept:浏览器可接受的MIME类型。
Accept-Charset:浏览器可接受的字符集。
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate头的应答中。
Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。
Content-Length:表示请求消息正文的长度。
Cookie:这是最重要的请求头信息之一,参见后面《Cookie处理》一章中的讨论。
From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不会用到它。
Host:初始URL中的主机和端口。

其他关于HTTP头完整、详细的说明,请参见www.w3.org/Protocols/ 的HTTP规范。

3、响应头

HTTP响应头向客户端提供一些额外信息,比如谁在发送响应、响应者的功能,甚至与响应相关的一些特殊指令。这些头部有助于客户端处理响应,并在将来发起更好的请求。对响应头的操作是后端开发者的任务。

由于响应头较多,不在这里一一列举。其他关于HTTP头完整、详细的说明,请参见www.w3.org/Protocols/ 的HTTP规范。

三、实际应用

1、常用请求库:

axios: Axios是一个基于promise的HTTP库,类似于jQuery的ajax,用于http请求。可以应用于浏览器端和node.js,既可以用于客户端,也可以用于node.js编写的服务端。

2、用户体验:

网络优化:要提升用户体验,网络优化是一个很重要的方面。

9ea601a7e61ebbafc48f5bb4a16a0ad.png

稳定性:重试能够保证稳定,但是防止加剧恶劣情况;缓存要合理使用

16a8a54e05337e51e726b1241d17297.png

四、了解更多

通信方式
WebSocket:浏览器与服务器进行全双工通讯,适合实时性要求高(比如聊天室)的应用