一、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 成功

  200 OK
  204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端 往服务器发送信息,而不需要返回数据时使用。
  206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。

3XX 重定向

  301 Moved Permanently :永久性重定向
  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 客户端错误

  400 Bad Request :请求报文中存在语法错误
  401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进 行过一次请求,则表示用户认证失败。
  403 Forbidden :请求被拒绝
  404 Not Found
  405 Method Not Allowed 禁用请求中指定的方法

5XX 服务器错误

  500 Internal Server Error :服务器正在执行请求时发生错误
  502 Bad Gateway: 是指错误网关,无效网关
  503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
  504 Gateway Timeout:前面的网关代理服务器能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应

二、具体应用

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 2020-12-12 14:16  HuangCoder  阅读(116)  评论(0)    收藏  举报