打开浏览器,输入一个网址,网页唰一下就出来了。这个过程背后,靠的就是HTTP协议在干活。它像是互联网世界的快递员,负责把你要的信息从服务器搬到你的设备上。
无状态:每次请求都是“陌生人”
HTTP最明显的一个特点就是“无状态”。也就是说,服务器不会记住你上一次做了什么。比如你在电商网站登录了账号,点开商品页,服务器其实并不知道你是谁——它只认这次请求里有没有带登录凭证。
这就像去便利店买水,店员不会记得你上周买了啥。每次你进店,都得重新说明需求。为了弥补这一点,浏览器会通过Cookie自动带上身份信息,让服务器“认出”你。
基于请求-响应模型:问一句,答一句
HTTP通信是典型的“你问,我答”模式。客户端(比如浏览器)发一个请求,服务器收到后返回一个响应。没有主动推送这回事,服务器不能突然给你发点啥。
这就跟打电话一样:你拨通对方,说“在吗”,对方回“在”,然后你再提问题。如果没人先拨号,谁也不会主动说话。
常见的请求方法
GET用来获取资源,比如打开一个网页;POST用来提交数据,比如登录表单。还有PUT、DELETE这些,常用于API接口操作。
GET /index.html HTTP/1.1\r\nHost: www.example.com\r\n\r\n
上面这段是典型的HTTP请求头。第一行说明要访问的路径、协议版本,后面是主机名等附加信息。
明文传输:内容不加密
传统的HTTP是明文传输的,意味着你在网络上传的数据,别人如果能截获,就能直接看到内容。比如你在公共Wi-Fi下填写密码,黑客可能轻松抓包拿到。
这也是为什么现在大多数网站都转向HTTPS。它在HTTP下面加了一层加密(TLS/SSL),相当于把快递包裹放进保险箱里寄送。
灵活的头部字段:自定义通信细节
HTTP允许通过Header传递各种控制信息。比如告诉服务器“我要的是中文页面”(Accept-Language: zh-CN),或者说明缓存策略。
Accept: text/html,application/xhtml+xml\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0)\r\nCache-Control: max-age=3600\r\n
这些字段就像是快递单上的备注栏:易碎品、请放门口、代收货款等等,让双方沟通更细致。
支持缓存:减少重复下载
如果你昨天看过一篇新闻,今天再打开,浏览器可能根本不用重新下载页面,直接从本地缓存读取就行。这是HTTP内置的缓存机制在起作用。
服务器可以通过Expires或Cache-Control头来控制缓存时间。比如设置max-age=86400,表示一天内都不用重新请求。
这就像你常去的早餐摊,老板记住了你爱加辣,但只记住24小时。超过时间,就得再问一遍。”}