SEO 优化人员 HSTS 抓取指南
HSTS 向客户端声明应该只通过 HTTPS 访问,并可能显示为 307 重定向。了解原因以及如何查看真实状态代码。
HTTP 严格传输安全
HTTP 严格传输安全 (HTTP Strict Transport Security, HSTS) 是一种标准,在 RFC 6797 中定义,通过该标准,Web 服务器可以向客户端声明应该只通过 HTTPS 访问。
客户端(通常是 Web 服务器或爬虫)随后将通过 HTTPS 发出所有未来的请求,即使是跟踪到 HTTP URL 的链接。当发生这种情况时,从 8.0 版本开始,SEO Spider 会显示状态代码 307,状态为“HSTS Policy”,重定向类型为“HSTS Policy”。
这是在我们的 HSTS 测试站点 https://www.screamingprojects.com/hsts/ 上运行的 SEO Spider。

这是 Chrome 处理相同情况的方式(我在顶部勾选了“保留日志”选项,否则 307 会丢失)。

与 301 或 302 不同,此重定向实际上不是由 Web 服务器发送的。这只是浏览器和 SEO Spider 中的内部表示。实际上没有请求发送到 Web 服务器,它在内部被转换。
当 Web 服务器声明应该只通过 HTTPS 联系时,它会设置该声明的过期时间,因此使用 307 响应是有意义的,因为 307 意味着“临时重定向”。
协议概述
HSTS 协议基于服务器发送一个名为 Strict-Transport-Security 的标头,该标头必须仅通过 HTTPS 发送。如果通过 HTTP 发送,则会被忽略。标头有两个指令:
- max-age:这是强制性的,指定服务器必须仅通过 HTTPS 联系的秒数。
- includeSubDomains:这是一个可选字段。如果设置,则指定 HSTS 策略也应应用于任何子域。
示例
启用 HSTS 一年:
Strict-Transport-Security: max-age=31536000
强制 HSTS 策略过期:
Strict-Transport-Security: max-age=0
为此域和所有子域启用 HSTS 策略一个月:
Strict-Transport-Security: max-age=2592000 ; includeSubDomains
优点
由于 HTTP 到 HTTPS 的重写在客户端内部发生,因此与仅使用站点范围的 HTTP -> HTTPS 重定向相比,这有几个关键优势。
- 减少通过非安全协议的通信。
- 提高性能,因为每次遇到 HTTP 链接时都可以避免往返。
- 减少 Web 服务器上的负载。
但是,仍然需要站点范围的 HTTP -> HTTPS 重定向。因为 Strict-Transport-Security 标头只有通过 HTTPS 发送才会被识别。因此,如果首次访问您的站点不是通过 HTTPS,您仍然需要初始重定向到 HTTPS 才能传递 Strict-Transport-Security 标头。
鉴于以上情况,您可能希望永远不会在 SEO Spider 中看到 307 作为第一个响应,但这可能会发生。这是因为在后台,SEO Spider 会对 robots.txt 文件发出 HTTP 请求,收到到该站点 HTTPS 版本的 301,然后收到 Strict-Transport-Security 标头,因此会报告第一个抓取的 URL 的 307。如果您禁用 robots.txt 检查,SEO Spider 将报告 301。
启用和禁用 HSTS
默认情况下,HSTS 策略已禁用,但可以通过勾选 SEO Spider 中“配置 > Spider > 高级”下的“尊重 HSTS 策略”配置来启用它。

这意味着 SEO Spider 将完全忽略 HSTS,并报告底层的重定向和状态代码,除非启用此配置。
如果您对如何使用 Screaming Frog SEO Spider 有任何疑问,请与我们的 支持 团队联系。