一、HTTP基础
1.请求/响应报文
请求报文:

响应报文:

2.请求方法
| 方法 | 作用 | 说明 |
| GET | 获取资源 | 网络请求中大部分使用的是get方法 |
| HEAD | 获取报文首部 | 用于确认url的有效性及资源的更新日期 |
| POST | 传输实体主体 | 主要用来传输数据 |
| PUT | 上传文件 | 方法本身不带验证机制,任何人都可以上传数据,存在安全问题 |
| PATCH | 对资源进行部分修改 | PUT也可以修改资源,但只能替换全部原始资源,PATCH允许部分修改 |
| DELETE | 删除文件 | 与PUT功能相反,同样存在安全问题 |
| OPTIONS | 查询支持的方法 | 查询指定URL支持的方法 |
| CONNECT | 要求与代理服务器通信时建立隧道 | |
| TRACE | 追踪路径 | 服务器将通信路径返回客户端 |
安全性:安全的方法不会改变服务器状态,只是可读的。GET、HEAD、OPTIONS是安全的。POST、PUT、DELETE是不安全的。
幂等性:如果一个请求执行一次和执行多次的效果是一样的,服务器的状态也是一样的,那么它就是幂等的。GET、HEAD、PUT、DELETE 是幂等的。POST非幂等。
缓存性:请求报文的HTTP方法本身是可缓存的,例如GET和HEAD,PUT和DELETE不可缓存,POST在多数情况下不可缓存。
GET与POST比较:
a.参数:get方法参数存在url中,post方法参数存在实体主体中;
b.安全性:get方法是安全的,post方法不安全;
c.幂等性:get方法幂等,post方法非幂等;
d.缓存性:get方法可缓存,post方法在大多数情况下不可缓存;
e.XMLHttpReuest:使用XMLHttpRequest的post方法时,浏览器会先发送Header在发送Data。使用get方法时会将Header和Data一起发送;
XMLHttpRequest是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过URL来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。 XMLHttpRequest在AJAX中被大量使用。
3.响应状态码
| 状态码 | 类别 | 含义 |
| 1XX |
Informational(信息性状态码)
|
接收的请求正在处理
|
| 2XX |
Success(成功状态码)
|
请求正常处理完毕
|
| 3XX |
Redirection(重定向状态码)
|
需要进行附加操作以完成请求
|
| 4XX |
Client Error(客户端错误状态码)
|
服务器无法处理请求
|
| 5XX |
Server Error(服务器错误状态码)
|
服务器处理请求出错
|
1XX 信息
100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。2XX 成功
204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端 往服务器发送信息,而不需要返回数据时使用。
206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。
3XX 重定向
302 Found :临时性重定向
303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都 会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None- Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。
307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
4XX 客户端错误
401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进 行过一次请求,则表示用户认证失败。
403 Forbidden :请求被拒绝
404 Not Found
5XX 服务器错误
500 Internal Server Error :服务器正在执行请求时发生错误二、具体应用
1.连接管理

短连接(Short-lived connections)
指每一次HTTP请求都由自己独立的连接完成,意味着每一次HTTP请求都要建立新的TCP连接。开销很大
HTTP/1.1之前默认连接模型,如果想使用长连接,需指定 Connection:keep-Alive
长连接(Persistent connection)
指HTTP请求在事务处理结束之后,将TCP连接保持在打开状态,以便后续HTTP请求使用
HTTP/1.1开始默认使用长连接模型
流水线(HTTP Pipelining)
指客户在收到HTTP的响应报文之前就能接着发送新的请求报文,可以减少延迟。
2.cookie和session
HTTP是无状态协议,因此无法根据之前的状态处理本次请求。这时就会出现一个问题,设想:当我们登录某宝后,点击商品跳转到新的页面,根据HTTP无状态性,此时需要再次登录。Cookie为了解决这个问题而诞生。

Cookie和Session区别
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、Cookie只能存储ASCLL码字符串,而Session可以存储任何类型的数据。
3.缓存
posted on
浙公网安备 33010602011771号