1.请求
1.1 请求格式
http请求由请求行,请求头,请求体组成。
1.1.1 请求行:标识请求方法,URL,版本号等信息
1.1.2 请求头:键值对的形式显示本机的属性信息
1.1.3 请求体:请求携带的参数,一般只有post方法才会有这部分
1.2 URL的格式
protocol://hostname[:port]/path/[;parameters][?query]#fragment
http://www.baidu.com:80/s?wd=ios#page
protocol:协议,分为http和https,它们都是用来传输数据的协议,但是也有区别
HTTP 与 HTTPS 区别
- HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
- 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
- HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
- http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
- HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
hostname:主机名
可以是域名或者ip地址,这个名字对应互联网上某一台计算机,我们通过访问这台计算机+对应的端口号访问到特定的服务。
port:端口号,一般省略,使用默认的端口号。
一些常用服务的端口号:
mysql:3306
http:80
https:443
.....
path:路径,对应访问的文件存储在计算机的哪个位置
1.3 请求方法
其中GET和POST用的最多,它们有区别,但是一般可以相互转换。
GET和POST的区别:
GET的参数直接跟在URL后面,各个参数通过&连接,是明文传递的,所以GET请求没有请求体。
POST的参数放在请求体中,需要通过抓包才能查看,所以相对于GET请求更加安全。
2.响应
2.1 响应格式
响应由响应行,响应头,响应体组成。
2.1.1 响应行:协议/版本号 状态码 状态描述
响应状态码的五种可能取值:
-
1xx 信息性状态码:表示接收的请求正在处理。 100 Continue:继续。客户端应继续其请求。 101 Switching Protocols:切换协议。服务器根据客户端的请求切换协议。
-
2xx 成功状态码:表示请求正常处理完毕。 200 OK:请求成功。一般用于 GET 与 POST 请求。 201 Created:已创建。成功请求并创建了新的资源。
-
3xx 重定向状态码:需要后续操作才能完成这一请求。 301 Moved Permanently:永久移动。请求的资源已被永久的移动到新 URI。 302 Found:临时移动。资源只是临时被移动。
-
4xx 客户端错误状态码:表示请求包含语法错误或无法完成。 400 Bad Request:客户端请求的语法错误,服务器无法理解。 401 Unauthorized:请求要求用户的身份认证。
-
5xx 服务器错误状态码:服务器在处理请求的过程中发生了错误。 500 Internal Server Error:服务器内部错误,无法完成请求。 503 Service Unavailable:由于超载或系统维护,服务器暂时的无法处理客户端的请求。