请求行
url(uniform resource locator): 统一资源定位符,用于定义服务器资源,即后端接口地址
- 协议名:https:
- 主机名:xx.com
- 端口号:8000(可省略)
- 路径:/xx
- 查询字符串:?id=xx
请求概述
- 判断缓存 ( 浏览器 / 系统 / host 文件 )
- DNS域名解析 —— 若没有缓存、缓存过期,则域名供应商获取IP地址(即域名转换为IP地址),根据IP地址向服务器发起http请求:本地DNS服务器 - 根服务器 - com顶级域名服务器 - 网站服务器
- tcp 三次握手建立链接,第一次握手:询问服务器是否可用,第二次握手:服务器告诉客户端可用,第三次握手:访问
- tcp 四次挥手断开链接
请求体
用于传递表单数据,登录,注册 ,常见于POST
Restful API: 将每一个URL当作一个唯一的资源,使得Web应用程序具有更好的可扩展性、可维护性和可重用性;
请求方法: GET 获取、POST 新增、PUT / PATCH 更新、ELETE 删除
差异点:
传统:/api/list?pageIndex=2
Restful:/api/list/2( 不使用url )
GET POST 区别: GET参数在URL中,POST参数在请求体中; GET请求参数长度限制2K,POST没有长度限制; GET请求是幂等的,多次请求返回的结果是相同的,而POST不是。 GET一般用于获取资源;而POST一般用于提交数据 POST相对安全
请求头 - Request Headers
参考文档:developer.mozilla.org/zh-CN/docs/…
常见HTTP标头:
- Accpet:浏览器可接受的数据格式
- Accept-Encoding:浏览器可接受的压缩算法,如GZIP
- Connection:keep-avlie 一次TCP链接重复使用
- cookie
- Host:指明了请求将要发送到的服务器主机名和端口号
- User-Agent(简称UA):浏览器信息
- Content-Type:发送数据格式,如 application/json
响应体
在HTTP请求和响应中,响应体是指服务器返回给客户端的实际数据部分;它通常包含HTML、CSS、JavaScript、JSON、XML等各种格式的文本和二进制数据
响应行状态码:
- 1xx 服务器收到请求(不常用)
- 2xx 成功响应:200OK、201创建成功、204不带响应头 ;
- 3xx 重定向:301永远重定向、302临时重定向、304资源未被修改;(浏览器自动跳转响应头URL地址)
- 4xx 客户端错误 :401未授权、403禁止请求/无权限(forbidden)、404找不到资源(NotFuoud)
- 5xx 服务端错误:504网关超时
响应头 - Response Headers
常见HTTP标头:
- Connection: keep-alive - 表示客户端和服务器之间的连接保持活动状态,可重复使用不必每次重新建立连接;
- Content-Length: 表示响应体的长度的字节
- Content-Type: text/html;charset=utf-8:表示响应体的类型为“text/html”,编码格式为“utf-8”
- Content-Encoding:返回的压缩算法,如GZIP
- Keep-Alive: timeout=5:表示在没有活动连接时,服务器将在5秒后关闭连接;
- server:服务器技术
- Set-Cookie:用于服务端操作cookie
HTTP
HTTP 协议
超文本传输协议,规定客户端和服务端通讯,互联网世界数据通讯的标准和基石
HTTP 缓存
强制缓存(Cache-Control)
由服务端进行控制,一般为图片,CSS,JS资源(hash),于 Response Headers 中;
设置缓存 max-age,不设置 no-cache;Expires 标准已被 Cache-Control 代替;
如果 Cache-Control 没有过期会请求本地缓存,当缓存失效会重新向服务器请求资源;
协商缓存
- 属于服务端缓存策略,用于服务端判断 客户端资源 是否和 服务器资源 一样,然后告诉客户端是否可以使用本地缓存;
- 初次请求服务端会返回资源和资源标识,再次请求时返回
304或者新的资源和新的资源标识。 - 在 Response Headers中有两种:Last-Modified 资源的最后修改时间、Etag 资源的唯一标识(字符串)
- 优先使用Etag、Last-Modified只能精确到秒级,可以共存
总结:
http https
区别:
- http 明文传输,敏感信息容易被劫持;
- https = http + 加密(SSL/TLS),劫持了也无法解密;
https 加密方式:
对称加密:一个key,使用key加密的数据互相传输,并使用key进行解密;
客户端使用服务端返回的key进行加密和解密,同样服务端也使用key进行加密和解密,缺陷key会被劫持;
非对称加密:一对key,pubkey 公钥,key 私钥储存于服务端,使用公钥加密则需要使用私钥解密;
服务端返回公钥给客户端,客户端使用公钥对数据进行加密并传输,服务端使用私钥进行解密;
https 证书:
为什么需要使用第三方证书,为了防止中间人攻击,中间人可以劫持pubkey进行掉包,再通过自己的key进行解密; 慎用免费和不合规的证书,使用浏览器证书;
- 服务端需要向第三方机构申请证书
- 浏览器需要和第三方机构打通,支持证书校验的工作