http切换到https


分两种情况。

第一种是会发起一次 HTTP 以及一次 HTTPS:当你访问 HTTP URL,会发起一个普通的 HTTP 请求,服务器通过某些配置,会返回一个 301 状态码,并 Location 到对应的 HTTPS URL 上。浏览器接着重定向,发起 HTTS 请求。需要补充的是,当你后面再次访问这个 HTTP 请求时,因为存在浏览器缓存,可能直接在浏览器端就重定向了,这样的话只有一个 TCP 请求。

不过由于 HTTP -> HTTPS 重定向的过程是存在安全隐患的,中间人可以以这个 HTTP 请求为突破口,让你的 HTTPS 无用武之地。

因此大家搞了一个协议,叫做 Strict-Transport-Security (HSTS)。大致意思是如果服务器在 HTTPS 请求里返回了 Strict-Transport-Security 响应头,那么后面浏览器只能通过 HTTPS 请求访问这个域名的 URL。如果用户访问了对应的 HTTP URL,浏览器会自动切换到 HTTPS URL,只会有 443,没有 80.

不过理论上这样也有隐患,那就是第一次访问某个域名,而且使用的又是 HTTP,浏览器没有相应的 HSTS 记录,所以还是会发起一次 HTTP 请求,如果正好这个时候有中间人,就不安全了。所以 Chrome 等浏览器还会预置一批 HSTS 域名名单。

posted @   甜菜波波  阅读(1477)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-03-30 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
2018-03-30 springboot 项目中控制台打印日志以及每天生成日志文件
2018-03-30 springboot输出日志到指定目录,简单粗暴,springboot输出mybatis日志
2017-03-30 Maven的配置地址
点击右上角即可分享
微信分享提示