HTTP是一个属于应用层的面向对象的协议,超文本传输协议
主要特点
1.支持客户/服务器模式
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。
3.灵活:HTTP允许传输任意类型的数据对象,传输类型由Content-Type标记
4.无连接:无连接的含义是限制每次连接只处理一个请求
5.无状态:协议对于事务处理没有记忆能力。
HTTP格式
HTTP表示要通过HTTP协议来定位网络资源;
host表示合法的Internet主机域名或者IP地址;
port指定一个端口号,为空则使用缺省端口80;
abs_path指定请求资源的URI;
如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,这个通常是浏览器自动完成的。
HTTP请求
http请求由四部分组成,分别是:请求行、请求头、空行、其他消息体
请求行--① 请求头--② 空行--③ 其他消息体--④
请求行:请求方法+URI+协议/版本
HTTP协议的请求方法
GET--从指定的资源请求数据
POST--向指定资源提交数据,请求服务器进行处理,如表单数据提交、文件上传等,请求数据会被包含在请求体中
HEAD--与GET方法一样,都是向服务器发出指定资源的请求。但只有HTTP报头,没有响应体
PUT--向指定资源位置上传其最新内容
DELETE--请求服务器删除Request-URI所标识的资源
OPTIONS--使服务器传回该资源所支持的所有HTTP请求方法
TRACE—回显服务器收到的请求,主要用于测试或诊断
CONNECT–HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
常用方法GET和POST
Get--使用GET方法应该只用在读取数据,但有时候也会被用于提交数据
Post–向指定的资源提交要被处理的数据
GET和POST对比:
HTTP响应
由四部分组成,分别是:状态行、响应头信息、空行、响应正文
状态行--① 响应头信息--② 空行--③ 响应正文--④
状态行:协议/协议版本+状态码+状态描述
状态码
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //当前请求需要用户验证
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在
500 Internal Server Error //服务器发生不可预期的错误
502 Bad Gateway //从上游服务器接收到无效的响应
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP请求流程
HTTP不安全性
Http的通信是明文的,存在被窃听的风险;
无法确认通信双方身份,有可能会被人伪造;
无法验证报文的完整性,无法验证是否被篡改过;
如:HTTP劫持
网址被无辜跳转,多了推广的尾巴;
页面出现额外的广告;