HTTP(HyperText Transfer Protocol)即
超文本传输协议
,是一种详细规定了浏览器和
服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将
HTML(
超文本标
记语言
)
文档从
Web
服务器传送到Web 浏览器,用于客户端和服务器之间的通信。
1、发起http请求
当在浏览器输入一个网址回车后,就是发起了一次http请求。
URL(
统一资源定位符
)
也被称为网页地址
,是互联网标准的地址。
URL
的标准格式如下
:
http[s]://
服务器
IP:端口号/
路径
[?
查询参数]
借助浏览器可以快速发起一次HTTIP
请求,除了借助浏览器,在
Linux
系统中的
curl
命令也可以发起http请求(当然还有其他方法)。所以说,浏览器是属于
HTTP
工具的一种。
![](https://i-blog.csdnimg.cn/blog_migrate/56c8c6a36fcdc6ffe6f3901db082e4c5.png)
2、HTTP
协议详解
http协议是一种无状态的协议。无状态是指Web
浏览
器与
Web
服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,
然后
Web
服务器返回响应
(Response),
连接就被关闭了在服务器端不保留连接的有关信息。
也就是说,
HTTP 请求只能由客户端发起而服务器不能主动向客户端发送数据。
HTTP
遵循请求
(Request)/
应答
(Response)
模型
Web
浏览器向
Web
服务器发送请求时,
Web
服务器处理请求并返回适当的应答。
![](https://i-blog.csdnimg.cn/blog_migrate/9961dfb5e3e8e3be2b803c38232cfa82.png)
2.1 http请求
HTTP 请求包括三部分,分别是请求行
(
请求方法
)
、请求头
(
消息报头
)
和请求正文(也叫请求体):
![](https://i-blog.csdnimg.cn/blog_migrate/b478f0aedbc73975b65a1711d9cba282.png)
(1)
请求行
: HTTP
请求行的第一行即为请求行,请求行由三部分组成,第一部分
说明了该请求的请求方法
;
该行的第二部分是一个斜杠
(/login.php),
用来说明请求路径
;
该行的最后一部分说明使用的是
HTTP1.1
版本
(
另一个可选项是
1.0)
。
(2)
第二行至空白行为
HTTP
中的请求头
(
也被称为消息头
)
。其中,
HOST
代表请求的主机地址,
User-Agent
代表浏览器的标识。
(3) HTTP
请求的最后一行为请求正文,请求正文是可选的,一般出现在
POST
请求方法中。
2.2 http响应
HTTP 响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)
(1)HTTP
响应的第一行为响应行,其中有
HTTP
版本
(HTTP/1.1)
、状态码
(200)
以及消息
(2)第二行至末尾的空白行为响应头,由服务器向客户端发送消息
(3)报头之后是响应正文,是服务器向客户端发送的
HTML
数据
2.3 http请求方法
HTTP
请求的方法非常多,其中最常见的是
GET
、POST 。
GET
方法用于获取请求页面的指定信息
(
以实体的格式
)
。如果请求资源为动态脚本
(
非
HTML),
那么返回文本是
Web
容器解析后的
HTML 源代码,而不是源文件。比如请求的是php网页,但返回的是html格式的文件。
POST
方法也与
GET
方法相似,但
GET
方法没有请求内容而
POST
是
有请求内容的
。
POST
请求最多用于向服务器发送大量的数据。
GET
虽然也能发送数据,
但是有大小
(
长度
)
的限制,并且
GET
请求会将发送的数据显示在浏览器端,而
POST
则不
会,所以安全性相对来说高一点。
![](https://i-blog.csdnimg.cn/blog_migrate/8ad4f2023186f652ddb6b7334a90897f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9dad35e8ec585e7d4513bcd5fbe1573.png)
2.3 http响应的状态码
![](https://i-blog.csdnimg.cn/blog_migrate/8a1234a7682cf30d8db72943fa4009bf.png)
1xx:
信息提示,表示请求已被成功接收,继续处理。其范围为
100~101
。
2xx:
成功,服务器成功地处理了请求。其范围为
20 ~206
。
3xx:
重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并告
诉客户端新的资源地址位置。或者是页面的跳转,比如从一个登录页面输入用户和密码后跳转到网站的主页面,这时,浏览器将重新对新资源发起请求。其范围
为
300~ 305
。
4xx:
客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的
请求,或者最常见的是,请求一个不存在的
URL
。其范围为
400~415
5xx:
有时候客户端发送了一条有效请求,但
web
服务器自身却出错了,可能是
web
服务器
运行出错了,或者网站都挂了。
5xX
就是用来描述服务器内部错误步其范围为
500 ~505
。
以下为常见的状态码,必须熟记:
- 200:客户端请求成功,是最常见的状态。
- 302:重定向。
- 404:请求资源不存在,是最常见的状态。
- 400:客户端请求有语法错误,不能被服务器所理解。
- 401:请求未经授权
- 403:服务器收到请求,但是拒绝提供服务
- 500:服务器内部错误,是最常见的状态。
- 503:服务器当前不能处理客户端的请求一段时间后可能恢复正常。
2.4 HTTP协议与HTTPS 协议的区别
HTTPS其实就是HTTP 的“升级”版本,只是它比单纯的HTTP 协议更加安全。即在HTTP 下加入SSL层。也就是HTTPS 通过安全传输机制进行传送数据,这种机制可保护网络传送的所有数据的隐秘性与完整性,可以降低非侵入性拦截攻击的可能性。既然是在HTTP的基础上进行构建HTTPS 协议,所以,无论怎么样HTTP 请求与响应都是以相同的方式进行工作的。
HTTP
协议与
HTTPS
协议的主要区别如下
1
、
HTTP
是传输信息是明文传输,
HTTPS
则是有安全性的
SSL
加密
传输
。
2
、
HTTP
采用
80
端口,
HTTP
S
是
443
端口。
3
、
HTTPS
协议需要到
ca
申请证书,一般免费证书很少,需要交费,也有些
Web
容器提供,
而
HTTP
协议却不需要。
4
、
HTTP
连接相对简单,是无状态的;
而
HTTPS
协议是由
SSL+HTTP
协议构建的可进行加
密传输、身份认证的网络协议,相对来说,要比
HTTP
协议更安全。