本文共 1934 字,大约阅读时间需要 6 分钟。
向浏览器中输入“taobao.com” “www.taobao.com” “http://www.taobao.com”,最终浏览器的显示却变成“https://world.taobao.com/”,如何实现的?
实现的机制就是HTTP重定向
当浏览器向服务器发送一个url请求,然后服务器返回给浏览器一个响应,告诉浏览器按它响应中提供的url重新发起请求,如图
301:永久重定向,其它方法可能变更为GET
302:临时重定向,其它方法可能变更为GETserver { 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; }}
主要目的当然是为了抵御网络攻击。http协议发送的明文信息,而https协议则使用非对称加密协议TLS(通过密钥认证、公钥加密私钥解,私钥加密公钥解)将超文本信息加密后在网路上传输,使得信息不易泄漏
服务器通过增加响应头“Strict-Transport-Security: max-age=31536000”告诉浏览器应在一年内都使用HSTS(HTTP Strict Transport Security)策略,从而告诉浏览器在这个时间段应自觉使用https方式发起请求,(这也是为何服务器只会发送一次http->https重定向的原因,更主要的是可以避免浏览器频繁访问80端口时被中间人劫持)。而使用HSTS策略的服务器也不会接受HTTP请求。转载地址:http://qghrb.baihongyu.com/