【http】

204 阅读4分钟

请求行

url(uniform resource locator): 统一资源定位符,用于定义服务器资源,即后端接口地址

  • 协议名:https:
  • 主机名:xx.com
  • 端口号:8000(可省略)
  • 路径:/xx
  • 查询字符串:?id=xx

请求概述

  1. 判断缓存 ( 浏览器 / 系统 / host 文件 )
  2. DNS域名解析 —— 若没有缓存、缓存过期,则域名供应商获取IP地址(即域名转换为IP地址),根据IP地址向服务器发起http请求:本地DNS服务器 - 根服务器 - com顶级域名服务器 - 网站服务器
  3. tcp 三次握手建立链接,第一次握手:询问服务器是否可用,第二次握手:服务器告诉客户端可用,第三次握手:访问
  4. 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-cacheExpires 标准已被 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进行解密; 慎用免费和不合规的证书,使用浏览器证书;

  • 服务端需要向第三方机构申请证书
  • 浏览器需要和第三方机构打通,支持证书校验的工作

在这里插入图片描述