http协议/get|post

266 阅读4分钟

http 超文本传输协议.

	属于客户端与服务端进行传输的一种标准,

http请求报文:

	一般请求信息包括 :

			请求行: 请求方式  url  协议版本

			请求头:一般是存放一些关于浏览器信息的内容  

			空行

			请求数据 :也叫请求主体

http响应报文:

一般响应信息包括:

		状态行: http版本号  状态码  状态消息 三部分

		消息报头:用来说明客户端要使用的一些附加信息

		空行

		响应体: 响应正文  服务器返回给客户端的文本信息

状态码:

200 ok 操作正常  需要正在响应体中返回数据的时候 

204 no content 操作正常  不需要在响应体中返回数据的时候

304 not Modefied 重定向  

401 Unauthorized 客户端出错

403 Forbidden 客户端出错1 

413 Payload too large 请求长度过长 出现此结果

400 Badrequest  客户端错误  当参数无效时  

404 not Found 客户端错误  资源不存在的时候

501 未对某个请求进行操作的时候  

503 API不可用的时候 出现这样的结果 

http请求/响应步骤:

1.客户端连接到Web服务器

	一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接

2.发送Http请求

	通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

3.服务器接受请求并返回HTTP响应

	服务器接受请求并返回HTTP响应Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。4、释放连接TCP连接

4.释放连接TCP连接
(建议看一下tcp的三次握手 四次挥手)

	若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

5.客户端浏览器解析HTML内容

	客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

get和post

get和post请求的特点:

首先 get和post请求在本质上并没有什么区别 都是基于 http协议的请求 而http也是基于tcp/ip(数据在万维网中如何通信的协议)的协议  所以也可以称之为TCP链接

只不过基于http的规定 以及服务的限制 导致在使用的过程中 有所不同 

get请求

1. get请求比较具有幂等性以及安全性:

	幂等性指的是无论是使用get请求多少次 返回的结果基本上是一致的

	安全性指的是 get并不会对服务器数据有副作用 也可以理解为数据库中的查但是并不会增删改操作

2.get请求的参数一般是放在url中 明文呈现

3.get请求的数据http协议中并没有限制这个长度 主要是浏览器1以及WEB服务器所决定的,每个浏览器都不一样  一般都是限制在2k左右

4.get请求只产生了一个TCP数据包  会将请求头以及请求数据 一并发送
补充:get请求会被浏览器进行缓存 

post请求

1.不符合安全性 以及幂等性

2.在http规范中 post表示可能修改服务器上的资源的请求

3.post请求的参数在请求数据中 如果不进行加密  也是以明文呈现的 

4.post请求信息一般是放在请求正文上的 所以没有什么限制

5.POST 方法会产生两个 TCP 数据包,浏览器会先将请求头发送给服务器,待服务器响应100 continue,浏览器再发送请求数据,**

总结:

get以及post本质上并没有什么区别  在使用的过程中的区别都是因为浏览器/服务器的限制导致的