重定向告诉进入的人http://www.example.com
去https://www.example.com
。因为默认是http,如果你离开协议只输入www.example.com
然后你会去http://www.example.com
所以是的,你需要这个重定向。
不过,这有一些问题。
首先,http 是不安全的,可以被网络上的其他人读取和更改。这就是您应该使用 https 的原因。但是,由于 http 是不安全的,这意味着他们可以拦截您的重定向并让您使用 http 版本并继续拦截您的流量。或者将您重定向到https://www.evilexample.com
。
HTTP 严格传输安全(或 HSTS)是一种试图解决此问题的安全机制。您的服务器告诉浏览器始终为该站点使用 https。即使不键入协议(通常使用 http 时),即使您将协议键入为 http。
一旦浏览器为站点加载了 HSTS,它甚至根本不会发送 http 请求,而是会自动将这些请求更改为 https。这有几个优点:
- 它更安全,因为它不能被拦截。
- 它更快,因为不会浪费时间发送请求,
http://www.example.com
只是被告知去https://www.example.com
。
- 它可用于解决混合内容错误,因为如果您不小心包含了 http 源,则会自动更改 http 资源(仅适用于该站点但不从其他站点加载)。内容安全策略的 upgrade-insecure-requests 可能是一个更好的解决方案,但 HSTS 仍然提供基本版本。
同样正如另一个答案所述,另一个单独的好处是,此设置还意味着浏览器将不允许访问者单击该站点的证书错误,从而增加了针对攻击的额外安全性。
HSTS 的主要缺点是:
- 您的网站只需要使用 https - 这似乎很明显,但很容易错过仅使用 http 的网站的一部分。如果使用 includeSubdomain 选项,则为 http 上的子域。
- 访问者需要首先访问该站点以获取 HSTS 政策,尽管您可以将其预加载到浏览器中,但这不太可能做出决定。
- 浏览器支持还不是通用的。即使是搜索引擎等使用的爬虫也可能不会使用它。
所以希望这能解释为什么 HSTS 是一件好事并且是你应该保留的东西。在重定向之上。