有一个有趣的现象,在访问一个https的站点,比如 https://www.aaa.com,首次访问时,访问的地址是 http://www.aaa.com,(不加S),出现的是网站不可用,打不开,再次使用https进行访问,就能正常打开。随后在使用http协议进行访问,会自动重定向到https的域名,请问这是浏览器缓存之后自动重定向的行为,还是服务器端没有做好http到https站点的重定向?具体的原理是什么?我百度一下,没有相关的描述,求解答,不当之处,还请指出,谢谢。
这是使用了 HSTS(HTTP Strict Transport Security) ,我写过1篇相关随笔 使用https的HSTS需要注意的一个问题
明白了,第一次访问http页面,由于服务器端没有做好301重定向,所以出现链接断开无法访问,第二次正常访问https站点时,支持HSTS的浏览器响应头含有Strict-Transport-Security: max-age=31536000;在接下来的一年(即31536000秒)中,浏览器只要向xxx或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入 http://xxx/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://xxx/ 发送请求。好的,非常感谢。
服务器端强制重定向行为。
如果有疑问,你可以打本地浏览器后台,用此页https://q.cnblogs.com/q/92796/做测试,
你直接访问http://q.cnblogs.com/q/92796/,在浏览器后台看看请求链就明白了。
就是看服务器端要求你明文传输,还是密文传输了,一般规则是:
公共页面或公共数据明文传输
用户特有页面或特有数据密文传输
主要是密文传输需要消耗更多的服务器性能,公共页面访问量通常最大。你好好理解一下估计就好明白了。
希望我的解释对你有所帮助。
好的,非常感谢。