浏览器的默认解析

我们在浏览器的地址栏中输入一个域名 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

最新文章

  1. SVN服务器和客户端安装教程
  2. Fancybox丰富的弹出层效果
  3. php 队列
  4. uploadfile上传文件时ie浏览器无法弹出窗口
  5. JS面向对象组件 -- 继承的其他方式(类式继承、原型继承)
  6. POJ 1064 Cable master (二分答案)
  7. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)
  8. JDK的下载和安装
  9. 用递归翻转一个栈 Reverse a stack using recursion
  10. .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法
  11. 教你在mac上配置adb环境变量
  12. Fedora 20 Gnome安装及配置记录
  13. windows自带的线程池
  14. 配置opencv环境
  15. java.lang.ClassNotFoundException: org.apache.commons.logging.Log
  16. css3学习系列之移动(一)
  17. Linux SSH 安装Tomcat
  18. 在echarts3中使用字符云
  19. 记录一次网站漏洞修复过程(二):第一轮处理(IIS目录枚举、应用程序错误)
  20. Java并发编程-AbstractQueuedSynchronizer源码分析

热门文章

  1. 微信小程序自定义导航栏机型适配
  2. GoAccess实现请求监
  3. [NOI Online 2022 提高组] 如何正确地排序
  4. 06#Web 实战:可滑动的标签页
  5. VueRouter 报错:inject() can only be used inside setup() or functional components
  6. wwise 音频引擎介绍
  7. Vue2安装less版本过高问题,需要降级
  8. 四,redis6版本的使用部署
  9. MySQL 8.0 新特性-原子DDL
  10. lg9019题解