你每天打开浏览器查天气、刷新闻、看视频,其实都在和 HTTP 协议打交道。它不是什么神秘的技术术语,而是互联网世界里最基础的“交通规则”之一。
HTTP 到底是啥?
HTTP 全称是 HyperText Transfer Protocol,翻译过来就是“超文本传输协议”。简单说,它规定了浏览器(比如 Chrome)和网站服务器之间怎么“对话”。当你在地址栏输入一个网址,按下回车,浏览器就会通过 HTTP 发起一个“请求”,告诉服务器:“我想看这个页面”。服务器收到后,如果没问题,就按协议把网页内容“响应”回来。
这个过程就像你去餐馆点餐。你(浏览器)告诉服务员(HTTP 协议)要一份红烧肉(请求),服务员把订单传给厨房(服务器),厨房做好后,服务员再把菜端给你(响应)。
HTTP 请求长什么样?
一个典型的 HTTP 请求包含几个部分:请求方法、请求地址、协议版本,还有请求头和请求体。最常见的请求方法是 GET 和 POST。GET 用来获取数据,比如打开一个网页;POST 用来提交数据,比如登录账号时填用户名密码。
GET /index.html HTTP/1.1\r\nHost: www.example.com\r\nUser-Agent: Mozilla/5.0...\r\nAccept: text/html\r\n\r\n上面这段是浏览器发给服务器的一个原始请求示例。虽然看起来像天书,但它结构很清晰:第一行说明要获取哪个资源、用什么协议;后面几行是附加信息,比如你是从哪个设备访问的,能接受什么格式的内容。
响应也有一套规矩
服务器不会沉默,它会返回一个响应。响应也有状态行、响应头和响应体。状态行里有个关键数字——状态码。比如 200 表示一切正常,页面成功加载;404 表示你找的页面不存在,就像去图书馆借书却发现书被借走了;500 是服务器自己出了问题,类似厨房突然停电做不了饭。
HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: 1024\r\n\r\n<html><body>Hello World</body></html>这段响应中,第一行表示协议版本和状态,后面是内容类型和长度,最后是真正的网页内容。
HTTP 是明文传输的
早期的 HTTP 所有内容都是裸奔的,也就是以明文形式在网络上传输。这意味着如果你在公共 Wi-Fi 下登录网站,有人技术手段拦截,就能看到你发了什么数据。为了解决这个问题,后来出现了 HTTPS,在 HTTP 的基础上加了一层加密,现在大多数正规网站都用 HTTPS,地址栏会多一把小锁图标。
尽管 HTTP 本身不安全,但它的设计简单、灵活,依然是现代 Web 架构的基石。你手机上的 App 加载资讯、在线听歌,背后很多还是靠 HTTP 或 HTTPS 在跑。