2. HTTPS 和 HTTP 有什么区别
HTTPS 和 HTTP 的区别,是网络协议面试里非常高频的问题。很多同学只会回答“HTTPS 比 HTTP 安全,因为加密了”,这个回答方向没错,但太浅。测试岗位回答这个问题,要讲清楚它们在接口测试、抓包、证书、登录鉴权、安全测试和问题定位中的实际影响。面试官真正想知道的是:你是否理解 HTTPS 为什么安全,是否知道证书的作用,是否知道为什么抓包 HTTPS 要安装证书,是否能解释接口访问证书错误、混合内容、Token 泄露等问题。
HTTP 是明文传输协议,HTTPS 是在 HTTP 基础上增加 TLS/SSL 加密层后的安全协议。也就是说,HTTPS 本质上仍然是 HTTP 请求和响应,只是在传输过程中通过加密、身份认证和完整性校验保护数据。测试工程师不需要深入每个加密算法,但必须知道 HTTPS 对测试工作有什么影响。
一、HTTP 和 HTTPS 的核心区别
1. 是否加密
HTTP 是明文传输,请求参数、Header、Cookie、响应内容在网络传输中理论上可以被窃听。
HTTPS 会对传输内容加密,即使被抓到网络包,也难以直接看到明文内容。
这对登录、支付、个人信息、订单信息等敏感场景非常重要。
2. 端口不同
HTTP 默认端口是 80。
HTTPS 默认端口是 443。
实际项目中也可能配置其他端口,但默认端口要知道。
3. 是否需要证书
HTTPS 需要服务端配置 SSL/TLS 证书。浏览器会校验证书是否可信、是否过期、域名是否匹配。
如果证书异常,浏览器可能提示“不安全”或拒绝访问。
4. 安全能力不同
HTTPS 主要提供三类安全能力:
- 加密:防止内容被窃听;
- 身份认证:确认访问的服务器是真的;
- 完整性校验:防止传输内容被篡改。
二、HTTPS 为什么更安全
HTTPS 的安全不是只靠“加密”两个字。它主要解决三个问题。
1. 防窃听
HTTP 明文传输,用户名、密码、Token、Cookie 可能在网络中被看到。HTTPS 加密后,传输内容不容易被直接读取。
2. 防伪装
证书用于证明服务器身份。浏览器访问 https://example.com 时,会校验证书是否属于这个域名,避免用户访问到伪造网站。
3. 防篡改
HTTPS 会校验数据完整性,降低中间人篡改请求或响应内容的风险。
测试中,如果登录接口、支付接口、用户隐私接口还使用 HTTP,就存在明显安全风险。
三、HTTPS 证书测试关注点
测试人员不一定配置证书,但要知道证书问题会导致什么现象。
常见证书问题包括:
- 证书过期;
- 证书域名不匹配;
- 使用自签名证书但浏览器不信任;
- 证书链不完整;
- 证书配置在错误服务或错误环境;
- App 证书校验失败。
表现可能是:
- 浏览器提示连接不安全;
- 接口请求失败;
- App 无法访问接口;
- 抓包只看到 CONNECT,看不到明文;
- 自动化脚本请求 HTTPS 报证书错误。
四、为什么抓 HTTPS 要安装证书
Charles、Fiddler 抓 HTTPS 时,通常需要安装并信任抓包工具证书。这是因为 HTTPS 内容是加密的,抓包工具要在客户端和服务端之间做解密代理。
如果没有安装证书,抓包工具可能只能看到:
CONNECT api.example.com:443
看不到具体 URL、请求体和响应体。
安装证书并信任后,抓包工具才能解密 HTTPS 流量。但如果 App 做了证书绑定,普通抓包可能仍然失败。
面试可以这样讲:
HTTPS 是加密传输,所以抓包工具如果要查看请求和响应明文,需要安装并信任抓包工具的根证书,让客户端信任这个代理证书。否则只能看到连接,不一定能看到具体内容。
五、HTTPS 在接口测试中的影响
接口测试工具如 Postman、Requests、RestAssured 调用 HTTPS 接口时,可能遇到证书校验问题。
测试环境经常使用自签名证书,如果客户端不信任,就会请求失败。解决方式可能是导入证书,或者在测试脚本中关闭证书校验。但关闭校验只能用于测试环境,不建议用于生产。
测试要关注:
- 测试环境是否 HTTPS;
- 证书是否可信;
- 是否存在证书过期;
- 自动化脚本是否能正常访问;
- 是否错误关闭生产证书校验;
- 敏感接口是否仍使用 HTTP。
六、HTTP 切 HTTPS 常见问题
项目从 HTTP 改为 HTTPS 后,可能出现:
1. 混合内容
HTTPS 页面中加载 HTTP 图片、脚本或接口,浏览器可能阻止。
表现:页面资源加载失败,控制台提示 Mixed Content。
2. 回调地址错误
支付、第三方登录、短信回调等地址如果仍写 HTTP,可能导致回调失败或安全风险。
3. Cookie Secure 属性
如果 Cookie 设置了 Secure,它只能在 HTTPS 下发送。HTTP 环境可能拿不到 Cookie。
4. 证书链问题
某些浏览器或 App 不信任证书,导致部分用户访问失败。
5. 抓包困难
HTTPS 抓包需要安装证书,App 可能有证书绑定。
七、HTTPS 和安全测试
测试敏感业务时,要关注:
- 登录接口是否使用 HTTPS;
- 密码是否明文出现在 URL 中;
- Token 是否通过 HTTPS 传输;
- Cookie 是否设置 Secure 和 HttpOnly;
- 是否存在 HTTP 降级访问;
- 是否有敏感信息在响应中明文返回;
- 证书是否过期或不可信。
HTTPS 不是万能安全,但它是基础要求。
八、项目场景:登录接口安全性分析
如果登录接口使用 HTTP:
http://api.example.com/login
请求体包含用户名和密码,这就有被窃听风险。测试可以提出安全风险:登录、支付、个人信息等敏感接口应使用 HTTPS。
如果使用 HTTPS,但抓包发现 Token 出现在 URL 查询参数中:
https://api.example.com/user?token=xxx
也不推荐,因为 URL 可能被日志、浏览器历史或网关记录。更常见做法是放在 Header 中。
九、面试回答模板
如果面试官问“HTTPS 和 HTTP 有什么区别”,可以这样回答:
HTTP 是明文传输协议,HTTPS 是在 HTTP 基础上加入 TLS/SSL 加密后的安全协议。HTTPS 相比 HTTP 主要多了加密传输、服务器身份认证和数据完整性校验,所以更适合登录、支付、个人信息等敏感场景。HTTP 默认 80 端口,HTTPS 默认 443 端口。测试中我会关注 HTTPS 证书是否有效、域名是否匹配、是否存在证书过期,抓 HTTPS 包时需要安装并信任 Charles 或 Fiddler 证书。接口测试时也要注意证书校验问题,以及 Cookie Secure、混合内容、回调地址等 HTTPS 切换带来的问题。
十、常见追问
追问:HTTPS 一定安全吗?
不一定。HTTPS 只保证传输层更安全,但如果业务本身有越权、弱密码、Token 泄露、敏感信息返回等问题,仍然不安全。
追问:为什么 HTTPS 抓包要装证书?
因为 HTTPS 是加密的,抓包工具需要作为中间代理解密流量,客户端必须信任抓包工具证书才能看到明文内容。
追问:证书过期会怎样?
浏览器或客户端可能提示不安全,甚至拒绝访问接口,自动化脚本也可能请求失败。
追问:HTTP 切 HTTPS 后要测什么?
测证书、页面资源、接口请求、回调地址、Cookie、抓包、App 访问和自动化脚本兼容性。
十一、练习清单
- 区分 HTTP 和 HTTPS;
- 记住默认端口 80 和 443;
- 理解证书作用;
- 用浏览器查看网站证书;
- 用 Charles 抓 HTTPS 请求;
- 分析一次证书错误;
- 检查登录接口是否 HTTPS;
- 理解 Cookie Secure;
- 理解混合内容问题;
- 准备 HTTPS 面试回答。
HTTPS 和 HTTP 的区别,测试回答不能只停留在“加密更安全”。要结合证书、抓包、接口测试、安全测试、Cookie、回调和项目风险一起讲,才是真正有测试思维的回答。
配套刷题:

