初次使用http打不开页面,使用https打开过后使用http协议又能正常访问
http协议为什么打不开https站点
在访问一个https的站点,比如 https://www.aaa.com,首次访问时,访问的地址是 http://www.aaa.com,(不加S),出现的是网站不可用,打不开,再次使用https进行访问,就能正常打开。随后在使用http协议进行访问,会自动重定向到https的域名,这是浏览器缓存之后自动重定向的行为,或者是服务器端没有做好http到https站点的重定向?
其实是这样的,第一次访问http页面,由于服务器端没有做好301重定向,所以出现链接断开无法访问,第二次正常访问https站点时,支持HSTS的浏览器响应头含有Strict-Transport-Security: max-age=31536000;意思是在接下来的一年(即31536000秒)中,浏览器只要向xxx或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入 http://xxx/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://xxx/ 发送请求。
浏览器支持
HSTS对浏览器的支持不尽相同:
Chromium和Google Chrome从4.0.211.0版本开始支持HSTS
Firefox 4及以上版本
Opera 12及以上版本
Safari从OS X Mavericks起
Internet Explorer从Windows 10技术预览版开始支持,之后微软又向IE11用户推送了支持HSTS的更新。