如果我在 nginx 上使用 HSTS,网站会强制重定向到 HTTP 吗?

如果我在 nginx 上使用 HSTS,网站会强制重定向到 HTTP 吗?

我需要通过 HTTP 访问一些图像和 JS 文件,但如果我启用 HSTS add_header Strict-Transport-Security "max-age=31536000";,则所有文件都会强制通过 HTTPS 提供。

所以我用了add_header Strict-Transport-Security "max-age=0;"

有没有启用 HSTS 的情况下通过 HTTP 访问文件的方法?

答案1

HSTS 不是重定向:您必须先将 HTTP 重定向到 HTTPS,然后 HSTS 标头会告诉您的浏览器永远不要返回 HTTP。这就是它的真正目的。如果您有 HSTS,则您不会通过 HTTP 提供任何内容。

您提到过,对于某些图像和 JavaScript,您需要此功能。但是,如果您的网站使用 HTTPS,则浏览器不应通过 HTTP 信任外部资源。尤其是通过 HTTP 将 JavaScript 加载到受 TLS 保护的网站会很危险:脚本可能会被修改以暴露受保护连接内的数据。

如果您需要在网站外提供静态内容,则可以使用子域。由于您尚未includeSubDomains在 HSTS 标头中设置,因此它不会应用于子域。您仍然可以static.example.com/path/to/image.jpg通过 HTTP 提供服务。

相关内容