共 14 节,按顺序
- 120 分钟
什么是网络
欢迎。如果你从来没想过,在浏览器里敲下一个网址之后到底发生了什么,那你来对地方了。Web 是这世上规模最大的一个例子,讲的却是一个极小的道理:一个程序向另一个程序要点东西,另一个程序回答它,对话结束。就这些。其余的一切(浏览器、应用、各种接口)都只是这一个模式之上的装饰。
Client-server modelBrowser as a clientURL structureWhat happens between typing and rendering - 215 分钟
HTTP 与 HTTPS
想象你正连着咖啡馆的免费 wifi。同一个网络里的另一个人,只要跑一个再普通不过的抓包工具,就能看到你的笔记本电脑发出的每一个请求。如果浏览器走的是明文 HTTP,那个人可以一边看着你输入登录表单,一边看到那个让你保持登录状态的会话 Cookie,还能把你访问过的每一个网址抄下来。HTTP...
Plaintext HTTPHTTPS as HTTP over TLSConfidentialityIntegrityAuthenticityPadlock UI - 330 分钟
请求与响应结构解析
你已经知道浏览器发出请求、服务器返回响应。你还没见过的,是这两样东西在网络上真正长什么样,也就是服务器收到的那段纯文本,以及客户端拿回来的那段纯文本。一旦你能读懂这个原始形态,很多本来像魔法一样的事情(一个页面为什么 404,一个登录表单为什么悄无声息地失败,一个 API...
Request lineHeadersBodyStatus codesMethodsCurl -v - 425 分钟
Cookie、会话与令牌
HTTP 没有记忆。你发出的每一个请求,在服务器看来都像是它头一次见到你,哪怕五秒钟前你刚发过一模一样的请求。一旦你需要服务器知道"这个请求来自刚刚登录的那个人",这就成了一个实实在在的问题。如果没有办法把这个事实带到下一个请求里,你在网站上每点一下都得重新登录一次。
Set-CookieHttpOnlySecureSameSiteServer sessionsJWT+1 - 525 分钟
DNS 详解
你把一个域名指向新服务器,改动提交上去了,从你的笔记本电脑访问一切正常,从同事的机器上却不行。又或者,站点对一半用户是挂的,另一半却好好的,而你的日志里连一条失败请求都找不到,因为请求根本没到。几乎每一个长成这个样子的谜团都是...
RootTLDAuthoritative serverRecursive resolverAAAAA+6 - 630 分钟
TLS 与证书
TLS 就是把普通 HTTP 变成 HTTPS 的那一层。学完这一课,你会大致明白握手过程里到底发生了什么,一张证书究竟证明了什么,以及怎么在自己的终端里把一张真实的证书读出来。
TLS handshakeClientHelloServerHelloCertificateKey exchangeCA chain of trust+2 - 730 分钟
CORS
你的前端跑在 localhost:3000,你的 API 跑在 localhost:8000,那个在 curl 里好好的请求,到了浏览器里却挂掉了,控制台还飘出一条关于 Access-Control-Allow-Origin...
Same-origin policyOriginPreflight OPTIONSAccess-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers+1 - 825 分钟
REST API 基础
有人让你给一个已有的 API 加个端点,你在第一个决定上就卡住了:该写 POST /users/42/deactivate 还是 PATCH /users/42?两种都能用,两种都能上线。但其中一种在下一个人读来是理所当然的,另一种会在代码评审里引发一场争论。REST...
Resources as nounsMethods as verbsStatus codesIdempotencyHATEOASVersioning - 925 分钟
WebSocket 与 SSE
你要做的功能是"新消息一到就显示出来"。可你到目前为止学到的每一样工具,都假定客户端先问、服务器再答,也就是说服务器在被搭话之前根本没法开口。你可以靠一遍遍地问来装出这个效果,很多人也确实这么干,而且能用,直到代价或者延迟变得不可接受为止。到了那一步,你需要的是一条一直开着的连接,而网页世界给了你两...
Long pollingWebSocket upgradeFull-duplex framesServer-Sent EventsWhen to pick each - 1025 分钟
缓存与 CDN
你的首页要花 900 毫秒才能生成出来,而且给第一万个访客生成的东西,和给第一个访客的一模一样。你手上最大的一笔性能收益就藏在这个数字里,它不需要更快的数据库,不需要重写,也不用多加一台服务器:只要跟你和用户之间的那些浏览器、那些网络达成一个约定,说清楚哪些响应可以复用、能复用多久就行。HTTP...
Browser cacheProxy cacheCDN edgeCache-ControlETagIf-None-Match+2 - 1125 分钟
安全标头
一份安全评审落到你桌上,上面列了十四条,其中六条最后都归结为你没有发送的响应头。这一类加固有个好消息:它不是重新设计,而是反向代理或者框架配置里的那么几行,而每一行都堵死了一整类攻击,否则要防住它们就得改代码。它们没有哪一个是万能的,但每一个都很便宜。这一课讲的就是这套常用组合,以及怎么查出你已经有...
Content-Security-PolicyStrict-Transport-SecurityX-Content-Type-OptionsX-Frame-OptionsFrame-ancestorsReferrer-Policy+1 - 1220 分钟
速率限制与节流
上午 9 点 14 分,你的 API 开始对所有人超时。什么都没有发布。查下来是某个客户的集成里有一个不带延迟的重试循环,一台机器正以每秒四千个请求打向一个按每秒四十设计的端点。系统完全照你说的做了:它试着服务每一个请求,然后在服务它们的过程中倒下了。限流就是你忘了下的那条指令,这条指令说:必须拒掉...
Token bucketLeaky bucketFixed windowWhere to enforce429Retry-After+1 - 1320 分钟
监控与日志记录
凌晨三点,一位客户说结账挂了。你手上有一个名字、一个大概的时间,还有一套摊在五个服务上的系统。此刻你能查出来的一切,其实几个月前就被定死了,定它的人当初选择了记录什么、按什么形状记录。如果那些决定做得好,你四分钟就有答案。如果做得不好,你就要在上百条日志流里翻没有结构的文本,找一根连描述都描述不出来...
Structured logsCorrelation IDsTracesSpansFour golden signalsLog vs metric+1 - 1440 分钟
综合项目:一个小型 Web 服务器
这门课程里的每一课都是从外面往里看,讲一个响应头。你学过 Cache-Control 承诺了什么,Access-Control-Allow-Origin 允许了什么,一个 304 省下了什么。而这一切都是站在读别人写好的响应的位置上学的。
Serving HTTPCache headersCORS headersSecurity headersCurl -v304 Not Modified+1
用你的语言学习 Web
每一节课、测验和导师回复都以你的语言显示。AI 导师会用你提问的语言来回答。
Roles that use Web
See how hiring teams interview engineers on Web, in production-like environments.
Web Application Engineer
Hire web application engineers in real apps with real routes, real auth and real test suites. Live or take-home, fully recorded.
See the interviewFrontend Engineer (React, Angular, Vue)
Hire frontend engineers in real workspaces with Vite, real component libraries and real performance budgets. Live or take-home, fully recorded.
See the interviewFull Stack Developer
Hire full stack developers in real apps with real APIs, real UIs and real tests. Live or take-home, fully recorded.
See the interview