1. HTTP协议
1.1 简介
HTTP(Hypertext Transfer Protocol)是超文本传输协议, 是一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统进行交互。
主要特点如下:
- 无状态:对于之前的访问状态等信息不会记录。
- 请求/应答方式:由客户端发起请求,经过服务端处理后,返回响应给客户端。
- 自描述消息格式:可以通过 Content-Type 来描述传输的消息类型,例如 application/json、text/html 等。
- 无连接:在不使用 keep-alived 机制时,每次连接只处理一个请求,处理请求后会立即断开连接。
- 超文本信息系统:传输的内容不局限于文本,还包括图片、视频、音频等。
在 Client-Server 两端通信时,浏览器作为 HTTP
客户端,通过 URL
向 Web
服务器发送请求报文。Web
服务器接收到请求后,经过处理后向客户端发送响应信息,默认端口号为 80
。
1.2 URI/URL/URN
URI
为 Web
资源提供了统一的资源命名方式,URI
分为 URL
和 URN
,三者关系如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6160e44a617068524cc972e30e45cc97.png)
URI
(Uniform Resource Indentifier
,统一资源标识符):用于标识某一互联网资源。URL
(Uniform Resource Locator
,统一资源定位符):表示资源的地点。URN
(Uniform Resource Name
,统一资源名称):表示资源的名称。
绝对 URI
格式:
http://username:passsword@www.example.com:80/index.html?uid=1#ch1
1.3 HTTP 请求报文
![](http://media.timberliu.com/image/2019/1/23/HTTP%E8%AF%B7%E2%B1%82.jpg)
HTTP
请求报文包括三个部分:请求行、请求头、空格和实体。
1.3.1 请求行
请求行包括请求方法、URL和HTTP协议
1.3.1.1 请求方法
方法有 GET
、POST
、PUT
、DELETE
等八种类型。
方法 | 特点 |
---|---|
GET | 用来获取服务器端的一些资源,例如页面、JSON 字符串等。 |
POST | 向服务器端发送数据,传输实体主体 |
PUT | 传输文件 |
DELETE | 删除文件 |
1.3.1.2 GET 与 POST 的区别
类型 | GET | POST |
---|---|---|
作用 | 获取资源 | 向服务器发送数据 |
参数 | 通过 URL 请求传递参数GET test/login.jsp?name=timber&password=123 HTTP/1.1 |
通过请求实体传递参数POST test/login.jsp HTTP/1.1 Host: http://127.0.0.1 name=timber&password=123 |
传输数据大小 | 有限制,最多1024个字符 | 无限制 |
参数的数据类型 | ASCII码 | 无限制 |
安全性 | URL 是可见的,可能会泄露个人信息 |
POSt 相较于 GET 安全性较高。因为参数存在于Boby中,且不会被保存到浏览器历史或WEB日志中。 |