一、什么是HTTP协议
HTTP(超文本传输协议)是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。
二、状态码
状态码类别 | 描述 |
---|---|
1xx | 提示信息,表示协议处理未结束 |
2xx | 成功,服务器成功处理客户端请求 |
3xx | 重定向,资源位置改变,客户端需重新发送请求 |
4xx | 客户端错误,服务器无法处理 |
5xx | 服务器端错误,服务器在处理请求时内部错误 |
三、http协议的版本
HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开
HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开
四、Http协议的组成
Http协议由(Http请求+Http响应)组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。
http请求包括:请求行、请求头、请求体
http响应包括:响应行、响应头、响应体
(1)HTTP请求报文
HTTP请求报文由3部分组成(请求行+请求头+请求体)
(2)HTTP响应报文
HTTP的响应报文也由三部分组成(响应行+响应头+响应体)
五、HTTP请求方法
HTTP协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:
(1)GET
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
(2)HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
(3)POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
(4)PUT
向指定资源位置上传其最新内容。
(5)DELETE
请求服务器删除Request-URI所标识的资源。
(6)TRACE
回显服务器收到的请求,主要用于测试或诊断。
(7)OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
(8)CONNECT
HTTP协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
注意事项:
- 方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
- HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源。
六、GET与POST区别
-
GET方法提交的数据通过URL传递,而POST方法提交的数据通过HTTP请求的消息体进行传递。
-
GET方法提交的数据长度有限制,由URL长度限制;而POST方法提交的数据长度没有限制。
-
GET方法提交的数据可以被缓存,而POST方法不行。
-
GET方法提交的数据可以被收藏为书签,而POST方法不行。
-
GET方法提交的数据安全性较低,因为数据在URL中明文传输;而POST方法提交的数据相对安全,因为数据在请求体中加密传输。
-
GET方法用于获取数据,对服务器没有影响;而POST方法用于提交数据,对服务器会产生影响。
七、Http的优缺点
(1)优点
- 简单易用:HTTP设计简单,容易理解和使用,几乎支持所有的操作系统和浏览器。
- 兼容性好:HTTP是基于TCP/IP协议的,可以实现跨平台传输,保证了不同操作系统和应用程序之间的兼容性。
- 易于扩展:HTTP可以很容易地通过添加新的请求方法、报文头部、状态码等来扩展其功能。
- 可缓存性:HTTP支持缓存机制,可以提高数据传输的速度,降低网络带宽的消耗。
- 安全性较高:HTTP可以使用SSL/TLS等协议进行加密传输,保证了数据的安全性。
(2)缺点
- 传输速度较慢:HTTP使用明文传输,每个请求和响应都需要进行完整的通信过程,而且请求和响应的报文头信息也很多,因此传输速度相对较慢。
- 安全性有限:HTTP的安全性相对较差,因为它的通信数据是明文传输的,容易被拦截和窃取。
- 可靠性不高:HTTP没有任何机制来处理数据的丢失和重复,也无法保证数据传输的顺序和可靠性。
- 只能处理单向请求:HTTP只能处理客户端向服务器的单向请求,而无法实现服务器向客户端的主动推送。
- 没有事务支持:HTTP不支持事务机制,无法对执行的多个请求进行原子性操作。
八、HTTP与HTTPS的区别 *
- HTTP是超文本传输协议,信息是明文传输,存在安全隐患。HTTPS解决了 HTTP的安全隐患,同时在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文加密传输。
- HTTP通过TCP三次握手进行报文传输,HTTPS在三次握手之后加入SSL/TLS握手,才可进行加密报文传输。
- HTTP端口号是80,HTTPS端口号是443。
- HTTPS需要向CA(证书权威机构)申请数字证书,以保证服务器身份可信。
- 由于HTTPS需要加密和解密数据,传输速度会比HTTP慢一些。