博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器如何将你的http请求转为https请求?
阅读量:2494 次
发布时间:2019-05-11

本文共 1934 字,大约阅读时间需要 6 分钟。

1、问题

向浏览器中输入“taobao.com” “www.taobao.com” “http://www.taobao.com”,最终浏览器的显示却变成“https://world.taobao.com/”,如何实现的?

2、实现

实现的机制就是HTTP重定向

什么是?

当浏览器向服务器发送一个url请求,然后服务器返回给浏览器一个响应,告诉浏览器按它响应中提供的url重新发起请求,如图

HTTP重定向

常见重定向

301:永久重定向,其它方法可能变更为GET

302:临时重定向,其它方法可能变更为GET

http请求转为https请求

  • 1 “taobao.com” ==>>“https://www.taobao.com”
    淘宝为扩大网络搜索流量购买了一些相似的域名,如taobao.com,然后将这些域名都重定位(类似于Nginx的重定位机制)到“www.taobao.com”,当你访问这些相似域名时,浏览器就会按照服务器响应的应重定向要求,向真正的域名发起请求
  • 2 “http://www.taobao.com” ==>>“https://www.taobao.com”
    http默认端口为80,而https默认端口为443
    当浏览器发送“http://www.taobao.com”url请求时,服务器的80端口监听到该请求后返回包含重定位url的响应,告诉浏览器应访问443端口,如nginx配置如下:
server {    listen       80    listen       443 ssl;    server_name blog.yoodb.com;    charset UTF-8;    ssl_certificate   /usr/local/nginx/conf/ssl/blog/2539791_blog.yoodb.com.pem;    ssl_certificate_key  /usr/local/nginx/conf/ssl/blog/2539791_blog.yoodb.com.key;    ssl_session_timeout 5m;    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    ssl_prefer_server_ciphers on;    if ($scheme = http) {        return 301 https://$host$request_uri;    }    location / {        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto https;        proxy_pass http://172.17.6.114:8082;    }    location ~*/upload/images/ {         expires 1h;        root /mnt/app/project/files;    }    location ~*/dynamic/images/ {        expires 1h;        root /mnt/app/project/files;    }}

3、为何服务器都要实用https?

主要目的当然是为了抵御网络攻击。http协议发送的明文信息,而https协议则使用非对称加密协议TLS(通过密钥认证、公钥加密私钥解,私钥加密公钥解)将超文本信息加密后在网路上传输,使得信息不易泄漏

服务器通过增加响应头“Strict-Transport-Security: max-age=31536000”告诉浏览器应在一年内都使用HSTS(HTTP Strict Transport Security)策略,从而告诉浏览器在这个时间段应自觉使用https方式发起请求,(这也是为何服务器只会发送一次http->https重定向的原因,更主要的是可以避免浏览器频繁访问80端口时被中间人劫持)。而使用HSTS策略的服务器也不会接受HTTP请求。

参考

转载地址:http://qghrb.baihongyu.com/

你可能感兴趣的文章
对象的接口
查看>>
一.高阶函数
查看>>
java继承
查看>>
springboot ----> sts如何启动两个实例
查看>>
石油采集(求联通区域) 2018多校寒假集训 (dfs+二分匹配)
查看>>
OO第三单元总结:JML
查看>>
js 全选
查看>>
3.3.10 动态SQL
查看>>
Arduino 极速入门系列 - 光控灯(3) - 光敏电阻、与电阻分压那些事
查看>>
7-5.11
查看>>
CSS下拉菜单
查看>>
Desktop OS Market Share: Windows 90% - Mac 9% - Linux 1%
查看>>
查看Eclipse中的jar包的源代码:jd-gui.exe
查看>>
【洛谷P2023】维护序列
查看>>
修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
查看>>
黑马-程序员C#泛型简介
查看>>
第四章
查看>>
Eclipse is running in a JRE, but a JDK is required 解决方法(转)
查看>>
windows符号服务器地址
查看>>
Sql Server 中存储过程的output return的区别
查看>>