HTTP协议
HTTP协议如何工作
HTTP协议定义了Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端
- 客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。 - 发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。 - 服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行(请求空行)和响应数据(请求体)4部分组成。 - 释放TCP连接
- 若connection模式为close,则服务器会主动关闭TCP连接,客户端被动关闭连接,释放TCP连接。
- 若connection模式为keepalive,则该连接会保持一段时间,在该事件内可以继续接受请求。
HTTP协议结构
- 示意图:
请求方法
GET和POST是最常见的HTTP方法,除此以外还有DELETE、HEAD、OPTION、PUT、TRACE。不过,目前的大多数浏览器只支持GET和POST
GET vs POST
- GET请求的参数是直接拼在地址栏URL的后面,而POST请求的参数是放在请求体里面的。
- GET请求有具体的长度限制,一般不超过1024KB,而POST理论上没有,但浏览器一般有个界限。
- GET请求相较于POST因为数据都是明文显示在URL上面的,所以安全和私密性不如POST。
- 从本质上来说GET和POST都是TCP连接,并无实质的区别。但是由于HTTP/浏览器的限定,导致它们在应用过程中出现了一些不同。GET产生一个数据包,POST产生两个。GET将http head和data一起发出去,服务器响应200。POST则先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200 ok。