HTTP 请求—响应周期是如何运转的
你打开的每个页面,都从一问一答开始。跟着一次请求走一遍:浏览器发出请求,服务器构建回答,响应变成你屏幕上的页面。
你打开的每个页面,都从一问一答开始。跟着一次请求走一遍:浏览器发出请求,服务器构建回答,响应变成你屏幕上的页面。
HTTP(超文本传输协议)是浏览器与 Web 服务器交换文档所使用的语言。它遵循一个简单的模式:客户端提出想要什么,服务器给出回答。这次交换就叫请求—响应周期。
一个页面往往需要很多次这样的交换。第一个请求取回 HTML,后续请求再把它引用的图片、样式表和脚本一一下载。
因为这样两端都能保持简单而独立。客户端只需说明想要什么,服务器只需描述返回了什么。只要双方遵守同一套规则,任意一端都可以被替换、升级或部署在任何地方。
正是这种分离,让同一个浏览器能与千百万台不同的服务器通信,同一台服务器也能回应千百万个不同的浏览器。
一切都从浏览器开始。它组织出一条 HTTP 请求,说明自己想要什么,并发往托管该站点的服务器。
请求以数据的形式在网络中传输,带着操作方式(如 GET)、想要的 URL 路径,以及补充上下文的请求头,比如浏览器类型和可接受的格式。
请求到达后,Web 服务器读取它,判断站点里应由哪一部分来回答,再把它转交到正确的位置。
处理程序完成真正的工作:读取文件、查询数据库或运行代码。结果被组装成一条 HTTP 响应。
响应包含概括结果的状态码、描述内容的响应头,以及装着实际页面、图片或数据的正文,随后返回给客户端。
响应到达后,浏览器解析它并把结果绘制到屏幕上。如果页面还引用了其他资源,同样的周期会为每一项重复一次。
HTTP 是客户端与服务器交换文档所遵循的一套规则:客户端发出请求说明想要什么,服务器返回包含它的响应。
请求会写明动作(方法,如 GET)、想要的资源(URL 路径),以及请求头里的额外信息,比如浏览器版本或可接受的内容格式。
响应带有表示结果如何的状态码、描述内容的响应头,以及装着实际页面、图片或数据的正文。
状态码概括处理结果。200 表示成功,404 表示找不到该资源,500 表示服务器在尝试回答时遇到了错误。
不是。HTTP 是请求—响应:客户端提问、服务器回答,这次交换就结束了。一个页面可能需要很多次这样的交换来取回图片、样式和脚本。
HTTP 本身是无状态的——每个请求各自独立。网站会在此基础上用 Cookie、令牌或会话补上状态,让服务器能跨请求认出你。