前面我说我的博客做了全站HTTPS跳转,当时用的是301重定向将HTTP跳转到HTTPS,后来我发现这样不太好。

我发现可以使用HSTS (HTTP Strict Transport Security) 来使浏览器强制用HTTPS来访问网站,而且速度比301重定向快得多也安全的多。

维基上是这样说的:

HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器建立连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段。

因为我博客是在虚拟主机上,所以我直接在.htaccess文件顶部加入

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=10886400; includeSubDomains; preload"
</IfModule>
max-age=10886400 单位为秒,意思是浏览器在这段时间内都以https访问这个网站,再次访问后重新计算。 includeSubDomains 意思为所有子域名均以https访问。   有了这个,你就必须保证网站能提供SSL证书,不然在时间内没有SSL证书,先前访问过的用户就无法使用了。 HSTS有一个问题就是在第一次访问时,浏览器没有收到HSTS文件头,所有还是用的HTTP访问。因此出现了**HSTS preload list** ,这更加粗暴,直接加入了浏览器内置名单。 申请**HSTS preload list **必须要有上述3个参数,且过期时间不小于10886400s,当然要有合法证书。 满足就可以直接申请, [https://hstspreload.appspot.com](https://hstspreload.appspot.com) **请保证域名和所有子域名都能提供HTTPS**     ----------------------------我是手动分割线------------------- Apache设置方法 <VirtualHost xx.xx.xxx.xx:443>
Header always set Strict-Transport-Security "max-age=10886400; includeSubdomains; preload"
Nginx设置方法 server {listen 443.....}
add_header Strict-Transport-Security "max-age=10886400; includeSubdomains; preload"