HTTP协议的应用场景 | 青训营笔记

230 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天 本节课主要是针对Http的几个不同的场景,分析了其协议、请求响应头,针对缓存部分做了详细的讲解,同时也提到了在企业中静态资源的常用做法是通过CDN缓存资源,同时针对Options请求方式引申出了跨域这个概念,并针对跨域的解决方法进行了对比分析。

场景分析

头条

  1. 打开chrome
  2. 输入 www.toutiao.com
  3. 打开控制台 右键->检查或者F12(windows),option+command+i(Mac)
  4. 切换到network

点击网络中的css请求,可以看到请求头如下:

access-control-allow-origin: *
access-control-request-methods: OPTIONS
access-control-request-methods: HEAD
access-control-request-methods: GET
age: 3810399
ali-swift-global-savetime: 1670494467
cache-control: max-age=31536000
content-encoding: br
content-length: 77810
content-md5: p0LTIRFTA3c+xIJSDr1DAQ==
content-type: text/css; charset=utf-8
date: Thu, 08 Dec 2022 10:14:27 GMT
eagleid: dde5cb2916743048666438021e
etag: W/"a742d321115303773ec482520ebd4301"
last-modified: Thu, 08 Dec 2022 10:09:49 GMT
server: Tengine
server-timing: cdn-cache;desc=HIT,edge;dur=1
timing-allow-origin: *
vary: Accept-Encoding
via: cache56.l2cn3036[0,0,200-0,H], cache18.l2cn3036[1,0], ens-cache15.cn4354[0,0,200-0,H], ens-cache21.cn4354[1,0]
x-cache: HIT TCP_MEM_HIT dirn:11:248702955
x-response-cache: edge_hit
x-server: goofy
x-swift-cachetime: 31535851
x-swift-savetime: Thu, 08 Dec 2022 10:16:56 GMT
x-tos-request-id: 8105f691b9039a886391b903-a92cd4d
x-tos-response-time: Thu, 08 Dec 2022 10:14:27 GMT
x-tos-storage-class: STANDARD
x-tt-trace-host: 01181ded22e28b6d63695ce96447b0cf96bb9cadd6eee26d07806b7c45634ff4291bb1854e605696b957475d1ad34795a272944584b30d46838b4313f62a2699625c0ac81295978234418f6db5fef4003174f4f72c37213ac60c029a4131b7d090
x-tt-trace-tag: id=03;cdn-cache=hit;type=static

其中cache-control表示了该css资源缓存了一年的时间

静态资源的解决方案是:缓存 + CDN + 文件名hash

  • CDN(Content Delivery Network)
  • 原理是通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务

跨域(cross-origin头)

同源:同域名、同端口、同协议

解决方法:

  • CORS

  • 代理服务器

  • Iframe(不方便)

业务场景

  • 表单登录
  • 扫码登录

技术方式

  • SSO(单点登录)