浏览器的默认解析

我们在浏览器的地址栏中输入一个域名 taobao.com(不要按回车), 然后将地址栏进行复制,粘贴到文本文件后,发现是 http://taobao.com/

这是浏览器的默认解析,其主要是完成了两件事

  1. 设置请求协议为 http 协议
  2. 将端口号默认设置为为80端口。

302重定向功能

我们在浏览器中,无论是输入 taobao.comwww.taobao.com还是http://www.taobao.com,最终都会显示https://www.taobao.com

具体的实现过程: taobao.comwww.taobao.com 是不同的域名,淘宝会把相似的域名都买下来,都重定向到同一个域名下。

浏览器的默认解析与重定向功能的结合

已知: http默认端口是80,https默认端口是443。

很多网站都提供https服务,为了避免用户输入http导致访问80端口出现访问不通的情况,同时也是为了与http版本的网站兼容,服务器监听80端口,对所有的80端口的访问都定向到https的url,实现方式都多种,最简单的就是使用302重定向,

HSTS

HSTS详解

有不少网站只能通过HTTPS对外提供服务。但用户在访问某个网站的时候,在浏览器里却往往直接输入网站域名。览器依然能正确的使用HTTPS发起请求。这背后多亏了服务器和浏览器的协作

解决之道:使用HSTS

既然建立HTTPS连接之前的这一次HTTP明文请求和重定向有可能被攻击者劫持,那么解决这一问题的思路自然就变成了如何避免出现这样的HTTP请求。我们期望的浏览器行为是,当用户让浏览器发起HTTP请求的时候,浏览器将其转换为HTTPS请求,直接略过上述的HTTP请求和重定向,从而使得中间人攻击失效,以规避风险。其大致流程如下:



其过程分为三步

  1. 用户在浏览器地址栏里输入网站域名,浏览器得知该域名应该使用HTTPS进行通信

  2. 浏览器直接向网站发起HTTPS请求

  3. 网站返回相应的内容

如何让浏览器直接发起https请求?

只要在服务器返回给浏览器的响应头中,增加 Strict-Transport-Security 这个 HTTP Header,例如:

trict-Transport-Security: max-age=31536000; includeSubDomains

就可以告诉浏览器,在接下来的31536000秒(1年)内,对于当前域名及其子域名的后续通信应该强制性的只使用HTTPS,直到超过有效期为止。

参考文献

  1. https://blog.csdn.net/error311/article/details/108442249
  2. https://blog.csdn.net/gui951753/article/details/82227800
  3. https://zhuanlan.zhihu.com/p/25537440

浏览器是如何区分http和https协议的的更多相关文章

  1. (二)Fiddler抓取Firefox、Chrome浏览器上的https协议

    Fiddler抓取Firefox.Chrome浏览器上的https协议 安装Fiddler后默认只抓取http协议,如果是https协议的话,浏览器就会提示"您的链接并不安全". ...

  2. fiddler抓取火狐浏览器上https协议请求

    前言:现在很多网站采用https协议,当打开fiddler时.浏览https协议的网站会提示不安全,若使用fiddler抓取https协议的请求,则需要向浏览器导入证书,才能抓取https协议的请求, ...

  3. HTTPS 协议降级攻击原理

    0x00 HTTPS 在传统流行的web服务中,由于http协议没有对数据包进行加密,导致http协议下的网络包是明文传输,所以只要攻击者拦截到http协议下的数据包,就能直接窥探这些网络包的数据. ...

  4. 老李分享:https协议

    老李分享:https协议   最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏 ...

  5. HTTP和HTTPS协议,看一篇就够了

    https://blog.csdn.net/xiaoming100001/article/details/81109617 因为http请求是无状态的,所以需要三次握手.四次挥手来确定状态. 大纲 这 ...

  6. 理解 HTTPS 协议

    英文原文:Understanding HTTPS Protocol 最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如 ...

  7. 【计算机网络】HTTPS协议的传输细节及过程分析

    1. 介绍一下HTTPS协议? 1.1 基本概念 http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输. 1.2 密码学基础 明文: 明文指 ...

  8. 【网络知识之三】HTTPS协议

    HTTPS是身披SSL外壳的HTTP.HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包.HTTPS使用的主要目的是提供对网站服务器的 ...

  9. HTTPS工作原理 HTTP协议数据结构分析 HTTP和HTTPS协议的不同之处

    HTTP有以下三个缺点:无加密,无身份认证,无完整性保护,因此所谓的HTTPS,它其实就是HTTP+加密+身份认证+完整性保护.HTTPS并不是一种新的协议,在通信接口使用了SSL和TLS协议而已.H ...

  10. HTTP和HTTPS协议,详解

    大纲 一.前言: 先来观察这两张图,第一张访问域名http://www.12306.cn,谷歌浏览器提示不安全链接,第二张是https://kyfw.12306.cn/otn/regist/init, ...

随机推荐

  1. 软赢软件控制器在Zstack云主机实现电机控制的方法

    工控领域上云实践-Zstack和软赢 在上面链接提到软赢的软件运动控制器在Zstack云主机上实现etherCat总线的电机控制,在后来的对比中发现,在云主机上虽然实现了让电机转起来,但是因为实时性还 ...

  2. 【TS】class类和接口

    class可以用来做数据的存储与回显,能将页面的数据分离出来并提取到class内,函数也可以抽离到class,实例化class进行调用.ts中的class类与js的class类基本相同,不同点在于ts ...

  3. setInterval()的使用

    setInterval() 作用  这个函数可以将一个函数每隔一段时间执行一次 参数  1.回调函数,该函数会每隔一段时间被调用一次  2.每次调用间隔的时间,单位是毫秒 返回值  返回一个Numbe ...

  4. 【ASP.NET Core】标记帮助器——替换元素名称

    标记帮助器不仅可以给目标元素(标记)插入(或修改)属性,插入自定义的HTML内容,在某些需求中还可以替换原来标记的名称. 比如我们在使用 Blazor 时很熟悉的 Component 标记帮助器.在 ...

  5. Linux 用户组管理

    用户组 群组是大家都熟悉的东西,群组有群主,也就是创建者.群管理员有一定的管理权限,比如上传群文件.管理成员等权限:群成员也有一定的权限,比如下载群文件. 私有组 一般来说,每一个用户都有自己的一个初 ...

  6. 【译】.NET 7 中的性能改进(七)

    原文 | Stephen Toub 翻译 | 郑子铭 Arm64 在.NET 7中,大量的努力用于使Arm64的代码生成与x64的代码生成一样好或更好.我已经讨论了一些与架构无关的PR,还有一些是专门 ...

  7. Vue学习笔记之Vue基础语法

    1. 概述 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 H ...

  8. 重要内置函数、常见内置函数(了解)、可迭代对象、迭代器对象、for循环原理、异常捕获

    目录 一.重要内置函数 二.常见内置函数(了解) 三.可迭代对象 四.迭代器对象 五.for循环内部原理 六.捕捉异常 一.重要内置函数 1. zip 说白了就是压缩几组数据值,说细了就是将可迭代对象 ...

  9. Django中获取用户IP方法

    Django中通过request.META可以来获取用户的IP. request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,比如用户IP地址和用户Agent(通常 ...

  10. pip使用阿里云镜像

    pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ pip config set install.trust ...