我试图更好地理解 Http/Https 以及我发送给客户端的标头。
当已经在 Http 下获取相同的文件时,客户端是否必须在 Https 下重新获取相同的文件,还是我需要发送特殊的标头?
好吧,通过 http/https 提供文件的原因是它只是一个横幅。当用户转到安全页面时,横幅仍位于该特定模板中。一旦用户确实通过 Https 获取了文件,该文件就会按预期缓存。
沃尔特
我试图更好地理解 Http/Https 以及我发送给客户端的标头。
当已经在 Http 下获取相同的文件时,客户端是否必须在 Https 下重新获取相同的文件,还是我需要发送特殊的标头?
好吧,通过 http/https 提供文件的原因是它只是一个横幅。当用户转到安全页面时,横幅仍位于该特定模板中。一旦用户确实通过 Https 获取了文件,该文件就会按预期缓存。
沃尔特
您不需要再次获取文件(绝对不应该)。
HTTPS是结合了 SSL/TLS 的 HTTP。它创建了一个安全连接,有助于防止窃听和中间人攻击。
您无需通过安全通道再次获取它 - 无论是否通过加密通道获取内容都是相同的。
如果您第二次通过安全通道获取内容,那么有人可能仍然在第一次“收听”并看到了您获取的数据。如果第二次与第一次没有任何关系,则取回的行为。
如果您需要 HTTPS 的附加安全性,则根本不要通过未加密的 HTTP 获取文件,因为它不安全,因此不受保护。
不需要先做一个 HTTP 然后 HTTPS 请求,只需做一个 HTTPS。
https
被认为是不同的“域” http
,因此如果您通过 http 连接向客户端发送文件,然后切换到 https(即使您没有更改任何其他内容),浏览器仍将再次请求该文件 - 就好像文件不在缓存中。就像您请求http://www.example1.com/file.txt然后http://www.example2.com/file.txt可能是“相同”文件,但浏览器不知道所以它必须再次获取它。
但是,一旦通过 https 请求它,它将照常缓存。
一个网站可以通过 HTTP 和 HTTPS 提供不同版本的文件,因此浏览器必须将它们视为独立的。
所有内容都通过 URL 缓存。由于 URL 包含协议,因此文件的 HTTP 和 HTTPS 版本将有单独的缓存条目。
避免这种情况的方法是始终提供文件的 HTTPS 版本。您不能使用 HTTP 版本的安全页面,或者遇到 IE 可怕的混合内容警告: