排查“https和http有什么区别”引发的线上问题时,日志里最该核对的是协议版本、请求主机名、重定向链路和混合内容来源这四类字段。它们能直接回答一个具体问题:用户到底走的是 HTTP 还是 HTTPS,中间是否被跳转,页面里是否还有 HTTP 资源。缺了这些字段,只看状态码很容易误判。
很多人把“请求成功”等同于“HTTPS 正常”。实际上,一个 HTTP 请求同样可以返回 200,一个 HTTPS 请求也可能因为证书、跳转或混合内容而在浏览器端报错。日志里的状态码只说明服务器返回了结果,不说明传输层协议、证书校验结果和页面资源是否全部走加密通道。
因此核对字段的目的不是确认“有没有报错”,而是还原一次请求的完整协议路径。
scheme(http 或 https)和实际端口。若反向代理终止 TLS,源站日志可能显示 http,此时要看代理层转发的 X-Forwarded-Proto,不能只看源站值。Location 头。重点看跳转方向是 http→https 还是反向,以及是否存在多跳或循环。blocked-uri、document-uri,用来定位页面内仍以 http 加载的图片、脚本、样式或接口。假设用户反馈“页面能打开但提示不安全”,按下面顺序做:
scheme 或 X-Forwarded-Proto:若是 http,说明入口层没有强制跳转或跳转被绕过。判断结果时注意条件:源站日志显示 http 不代表用户走的是 http,可能是代理终止了 TLS;反之,代理日志显示 https 也不代表页面内所有资源都安全。只有入口协议和混合内容两类证据都对齐,才能下结论。
HTTPS 只保证传输过程加密和一定程度的身份校验,不保证应用没有漏洞,也不保证搜索引擎给予排名提升。把日志核对目标定成“确认协议链路正确”比定成“确认站点安全”更准确。
另外,robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。这些机制与协议问题属于不同层面,排查时不要混在一起。
下一步:把上面五个字段加入访问日志或代理日志的默认输出,并在一次真实请求中完整走一遍核对流程,确认每个字段都能取到值。