5月27日 00:54
html meta 标签如何把 HTTP 换成 HTTPS?
meta 标签本身不能切换 HTTP 到 HTTPS,HTTPS 必须在服务器端配置。但 meta 标签可以辅助:用 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 让浏览器自动把页面里的 HTTP 资源请求升级成 HTTPS,避免混合内容警告。
服务器端配置 HTTPS 需要三步:申请 SSL/TLS 证书(Let's Encrypt 免费)、在 Nginx/Apache 配置证书和私钥、强制 HTTP 跳转 HTTPS(301 重定向或 HSTS)。
HSTS(HTTP Strict Transport Security)比 301 更安全——浏览器记住后,下次访问直接走 HTTPS,不会先发 HTTP 请求。设置方式:Strict-Transport-Security: max-age=31536000; includeSubDomains。注意一旦启用 HSTS 就很难回退。
追问
upgrade-insecure-requests 和 HSTS 有什么区别?
前者是 CSP 指令,浏览器自动升级页面内资源的请求;后者是 HTTP 响应头,让浏览器记住该域名只能走 HTTPS。两者配合使用效果最好。
301 重定向和 HSTS 选哪个?
都要。301 处理首次访问,HSTS 让回访用户不再发 HTTP 请求。只用 301 的话,第一次 HTTP 请求已经发出去了,中间人可以劫持。
混合内容警告怎么处理?
页面 HTTPS 但加载了 HTTP 图片/脚本。方案:upgrade-insecure-requests 自动升级,或者代码里统一用 // 协议相对 URL。