服务端3月1日 13:58
cURL 如何处理 HTTPS 和 SSL/TLS 证书验证?默认 cURL 验证 SSL 证书(CA 证书+域名匹配+有效期),验证失败报 SSL certificate problem。跳过验证:-k 或 --insecure(仅测试用,生产禁用)。指定 CA 证书:--cacert /path/to/ca.pem。客户端证书(mTLS):--cert client.pem --key client.key。指定 TLS 版本:--tlsv1.2 或 --tlsv1.3。查看证书信息:curl -vI URL 2>&1 | grep SSL。
## 追问
### 为什么 -k 不安全?
-k 跳过证书验证 = 不验证服务器身份,中间人可以伪...服务端3月1日 19:35
DNS 解析失败怎么排查和解决?四步排查:1.确认是否 DNS 问题——ping IP 能通但 ping 域名不行 = DNS 问题;2.定位故障环节——dig +trace 逐级查询看卡在哪一级;3.检查本地——resolv.conf 配置、本地 DNS 缓存、hosts 文件覆盖;4.检查网络——防火墙是否封 UDP 53。常见原因:DNS 服务器宕机、TTL 过期记录被删、CNAME 指向不存在的域名、防火墙拦截。
## 追问
### dig 和 nslookup 有什么区别?
dig 输出详细(TTL、权威服务器、耗时),支持 +trace 逐级追踪。nslookup 交互式,输出简洁但信息少。排查问题优先...服务端3月1日 20:22
Service Worker 的生命周期有哪些阶段?四个阶段:注册(register)→ 安装(install)→ 等待(waiting)→ 激活(activate)→ 运行中。register 触发下载 SW 文件,install 事件中预缓存资源,install 成功后进入 waiting 等待旧 SW 退出,activate 时清理旧缓存。跳过等待:skipWaiting() 让新 SW 立即激活,clients.claim() 立即接管页面。默认不跳过——已打开的页面继续用旧 SW 直到关闭。
## 追问
### 为什么要有 waiting 阶段?
安全考虑。已打开的页面可能依赖旧 SW 的缓存结构,强制切换可能导致缓存未命中...服务端3月1日 18:51
cURL 支持哪些协议?FTP/SFTP 怎么用?cURL 支持 20+ 协议:HTTP/HTTPS/FTP/SFTP/SCP/SMTP/IMAP/LDAP/RTSP 等。FTP 上传:curl -T local.txt ftp://server/remote.txt --user user:pass。SFTP 下载:curl sftp://server/file.txt --user user:pass -o local.txt,用 --key ~/.ssh/id_rsa 指定私钥。SFTP 比 FTP 安全,FTP 明文传输密码不推荐生产使用。
## 追问
### FTP 和 SFTP 有什么区别?
FTP 明文传输(密码和数据...服务端3月1日 13:54
cURL 如何处理 HTTP 认证?Basic Auth/Bearer/OAuth 怎么用?三种认证:Basic Auth——curl -u user:pass URL(密码明文 base64 编码必须配合 HTTPS);Bearer Token——curl -H "Authorization: Bearer TOKEN" URL;OAuth 2.0——先 curl token 端点拿 access_token,再带 token 请求 API。cURL 无内置 OAuth 流程,需手动实现 token 获取和刷新。
## 追问
### -u 和 -H Authorization 有什么区别?
-u user:pass 自动生成 Authorization: Basic 头,...服务端3月1日 20:01
DNS 服务器有哪些类型?各自什么作用?四类:递归解析器(Resolver)——用户端入口,代替客户端从根到权威逐级查询,8.8.8.8/1.1.1.1 就是这类;根域名服务器——13 组,返回 TLD 服务器地址;TLD 服务器——管理 .com/.org/.cn 等顶级域,返回权威服务器地址;权威服务器——存储域名最终记录(A/CNAME/MX 等),由域名所有者配置。查询链路:Resolver → 根 → TLD → 权威,每级缓存减少重复查询。
## 追问
### 13 组根服务器够用吗?
13 是早期 UDP 包大小限制的结果。实际远不止 13 台——用 Anycast 技术,每组根有数百个实例分布全球。
##...服务端3月1日 20:23
Service Worker 如何实现离线访问?SW 拦截 fetch 请求,命中缓存直接返回,未命中则网络请求并缓存响应。三种策略:Cache First(优先缓存,适合静态资源)、Network First(优先网络,适合 API)、Stale-While-Revalidate(返回缓存同时后台更新)。注册 SW 后监听 install 事件预缓存核心文件,fetch 事件中根据策略匹配缓存。
## 追问
### 首次访问能离线吗?
不能。SW 注册后首次 install 才缓存资源,首次访问本身还没 SW。解决方案:用 App Shell 模式预缓存核心 HTML/CSS/JS,首次加载完成后后续访问即可离线。
### 哪...服务端3月1日 13:53
cURL 如何处理 Cookie 和会话管理?发送 Cookie:-b "name=value" 发单个,-b cookies.txt 从文件读。保存 Cookie:-c cookies.txt 把响应 Set-Cookie 写入文件。同时发送和保存:-b cookies.txt -c cookies.txt(同一文件读写维持会话)。会话管理就是循环请求时每次 -b -c 同一个 cookie 文件,服务器通过 session_id 识别用户。
## 追问
### -b 和 -H Cookie 有什么区别?
-b "key=val" 自动生成 Cookie 头,更简洁。-H "Cookie: key=val" 手动写原始头,适合...服务端3月1日 19:59
DNS 为什么用 UDP 又用 TCP?各自什么场景?标准查询用 UDP 53(快、无连接、适合小报文),区域传送(zone transfer)和超过 512 字节的响应用 TCP 53(可靠、支持大报文)。EDNS0 扩展后 UDP 响应可达 4096 字节,超过仍切 TCP。UDP 无需握手一个包搞定查询延迟最低;TCP 需要三次握手,适合需要可靠传输的场景。
## 追问
### 为什么不全部用 TCP?
TCP 三次握手增加延迟——DNS 查询通常一个 UDP 包就够,用 TCP 慢 2-3 倍。DNS 查询量巨大,TCP 的连接开销对 DNS 服务器是灾难。
### UDP 丢包了怎么办?
客户端设超时重试(2-5 秒),换个...服务端3月1日 18:50
cURL 如何处理大文件下载和断点续传?断点续传:curl -C - -O URL(-C - 自动检测已下载部分继续)。原理:cURL 发 Range 头请求剩余部分,服务器返回 206 Partial Content。首次下载中断后重新执行同一命令即可续传。大文件优化:--limit-rate 2M 限速、--max-time 3600 超时保护、-# 显示进度条。前提:服务器必须支持 Range 头。
## 追问
### 怎么判断服务器是否支持断点续传?
curl -I URL 看响应头:Accept-Ranges: bytes 表示支持,没有则不支持。
### 下载中断后文件名不对怎么办?
-O 用 URL 最后一...