一、HTTP基本概念:
1、HTTP:超文本传输协议,是一种无状态的,以请求/应答方式运行的协议。(无状态:本身不会存储用户的信息)
2、HTTP报文格式:
···起始行(start line):描述请求或响应的基本信息
···头部字段集合(header):使用key-value形式更详细地说明报文
···消息正文(entity):实际传输的数据,不一定是纯文本,也可以是图片、视频等二进制数据
3、请求行报文格式:
请求方法:例如GET、POST、HEAD等,表示对资源的操作(例如使用GET:表示获取服务端的资源)
请求目标;通常是一个URI,标记了请求方法要操作的资源
版本号:表示报文使用的HTTP协议版本
4、响应报文格式:
版本号:表示报文使用的HTTP协议版本
状态码:用三位数字表示服务端处理的结果,例如200、404、500等
原因:对状态码的描述,帮助理解
注意:换行必须要有
5、HTTP头部字段:
头部字段是key-value(关键字:值)的形式,key和value之间用冒号分隔开,最后用CRLF换行表示字段结束。
如下图,key--->Content-Type,value--->application/Javascript
6、HTTP头字段可以使用HOST、Connection等已有头,还可以添加自定义头。
7、常用头字段:
···请求字段:请求头中的头字段,例如:HOST,Referer
···响应字段:响应头中的头字段,例如:Server,Date
```通用字段:请求和响应头里都可以有,例如:Content-Type,Connection
二、HTTP请求方法
首先,让我来了解一下请求方法的特性:
···幂等性:指同一个系统,使用同样的条件,一次请求和重复多次的请求对资源的影响是一致的
···安全性:请求不会影响到资源的状态
1、HTTP1.0:GET、POST、HEAD
···GET:用于信息获取,也就是发送一个请求来获取服务器上的某一资源,GET请求的数据附在URL之后,我们可以看到。
对服务器来说它是安全的,因为它只是进行读取数据,是幂等、安全的。
是客户端与服务器之间的交互,请求--应答模式。
资源通过一组HTTP头和呈现数据(如HTML文本,图片或者视频等)返回给客户端,但是GET请求中,不会包含呈现数据
···POST:向服务器提交数据,例如:表单数据提交、文件上传等,它提交的数据放在请求头中,我们看不到,所以安全性比较高。
因为这个请求可能会创建新的资源或者修改现有的资源,所以POST方法是非幂等的。
是客户端与服务器之间的交互,请求--应答模式
···HEAD:与GET方法一样,也是向服务器发出指定资源请求。
服务器响应请求时,仅包含HTTP头部信息,不包含呈现数据(如HTML文件、图片、视频等),这样就可以在不传输全部内容的情况下,获取到服务器的响应头信息。
HEAD方法常被用于客户端查看服务器的性能。
2、HTTP1.1:PUT、DELETE、OPTIONS、TRACE、CONNECT、PATCH
···PUT:与POST相似,PUT也是向服务器发送数据,数据在请求报文的主体内容中。保存到URL指定的位置。
指定了资源存放的位置
···DELETE:删除服务器上某一资源。删除所有请求URI所标识的资源
···CONNECT:要求在与代理服务器通信时建立隧道,实现用隧道协议进行tcp通信。
主要使用SSL(安全套接字层)和TLS(传输层安全)协议吧通信内容加密后用隧道传输
···OPTIONS:获取当前服务器支持的请求方法
···TRACE:请求服务器回显收到的请求信息
···PATCH:与PUT相似,,都是用于资源的更新
PATH用于资源的部分更新,而PUT一般用于资源的整体更新
当资源不存在时,PATH会创建新的资源,而PUT只会对已有资源更新
三、HTTP状态码: