http全称为HyperText Transfer Protocal,即超文本传输协议,是互联网上应用最广泛的一种网络协议,设计HTTP最初的目的是为了提供一种发布和接收html页面的方法,通过http或者https协议请求的资源由统一资源标识符来标识。
通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。
完整的http请求过程:
(1)建立TCP连接(三次握手)
(2)web浏览器向web服务器发送请求命令
(3)web浏览器发送请求头信息
(4)web服务器应答
(5)web服务器发送应答头信息
(6)web服务器向浏览器发送数据
(7)web服务器关闭TCP连接(四次握手)
http请求消息
一个http请求一般由四部分组成
(1)http请求的方法或动作,其中常见的方法有get、post、put、delete、trace
(2)发送请求的URL
(3)请求头,包含一些客户端环境信息、身份验证信息等
(4)请求体:请求正文可以包含客户提交的查询字符串信息、表单信息等
注.请求头和请求体之间有一空行,用来隔开请求头和请求体
这里主要说一下请求方法中get post和put的区别
get主要用于查询数据信息,因为请求信息暴露在url的查询字符串中,所以可能会存在安全性问题。另外get请求对请求体有大小限制,一般限制在2KB左右。get请求是可以缓存的
post主要用于数据的添加,相对get比较安全,没有大小限制,但是请求不可以缓存的。
put方法主要用于数据的更新,其他特性与post类似
一个HTTP响应一般由三部分组成
(1)一个由数字的状态码和文本信息,用来显示请求是成功还是失败
(2)响应头,:响应头和请求头一样,包含许多有用的信息,如服务器类型、日期时间、内容类型和长度等
(3)响应体:即响应正文
其中HTTP状态码是由三位数字构成,首位数字定义了状态码的类型
1··:信息类,表示收到web浏览器请求,正在进行进一步的处理
2··:成功,表示用户请求被正确接收、理解和处理。如:200 ok
3··:重定向,表示请求没有成功,客户端必须采用进一步的动作
4··:客户端错误,表示客户端提交的请求有错误 如:404 not found
5··:服务器错误:表示服务器不能完成对请求的处理
常见的http状态码:
200:请求成功
301:永久重定向
302:暂时重定向
304:请求内容未改变 读缓存
403:服务器已理解请求 但拒绝执行(没有权限)
404:请求失败资源未在服务器上发现
503:服务器暂时不可用