每日分享一个有趣的计算机小知识,今日话题:HTTP
HTTP是Hyper Text Transfer Protocol 的缩写,超文本传输协议,是一个用于传输超媒体文档(如html、文字、图片、视频)的应用层传输协议。
HTTPS(Hyper Text Transfer Protocol Secure)是HTTP的加密版本,它在HTTP和TCP之间增加了SSL/TLS协议层,用于加密数据,保证传输数据的完整和安全。http默认端口80,https默认端口为443。
历史版本
http/0.9
1991年发布,只能发送简单的 GET 请求,功能比较简单。
http/1.0
1996年发布,成为第一个被广泛使用的版本,每个请求一个TCP连接,请求结束即断开连接。
http/1.1
1997年发布,目前最主流使用的版本,默认使用持久连接,可以在一个TCP连接上发送多个请求响应,减少建立连接的开销。但每个连接同时只能处理一个请求,存在对头阻塞的问题。
http/2
2015年发布,对http/1.1版本的一次性能优化,通过二进制分帧、头部压缩、多路复用等提升了传输效率。
http/3
2022年成为正式标准,是一次更彻底的变革,将传输层的TCP协议替换为了UDP 的 QUIC 协议。
请求方式
GET
请求获取服务器上的资源,参数附加在 URL 路径中,常用于查询数据。
HEAD
与 GET 功能类似,但仅返回响应头,不返回响应体,适用于检查资源是否存在、获取资源元信息。
POST
向服务器提交数据,参数放在请求体body中,常用于创建资源、提交表单。
PUT
向服务器上传指定资源,覆盖原有内容,常用于替换资源。
PATCH
对资源进行部分更新,区别于 PUT 的全量更新,常用于修改资源的部分信息。
DELETE
删除服务器上的资源,常用于删除资源。
OPTIONS
请求服务器返回支持的请求方式、跨域信息等,常用于预检请求(如 CORS 跨域场景)。
TRACE
回显服务器收到的请求,用于诊断 HTTP 通信链路问题,因存在安全风险一般很少使用。
CONNECT
建立与目标服务器的隧道连接,常用于 HTTPS 代理场景,让客户端通过代理访问 HTTPS 资源。
常见请求头
Host
指定目标服务器域名和端口(HTTP/1.1 必选,如多域名部署时区分站点)
User-Agent
标识客户端设备/浏览器版本(用于服务器适配不同设备、统计访问来源)
Accept
指定可接收的响应数据格式(如接口请求时指定 application/json)
Accept-Encoding
声明支持的压缩算法(如 gzip,减少响应数据传输体积)
Content-Type
定义请求体数据格式(如表单文件上传 multipart/form-data)
Content-Length
标识请求体字节大小(帮助服务器判断数据是否接收完整)
Authorization
携带身份验证信息(如 JWT Token、Basic Auth,用于接口权限校验)
Cache-Control
控制客户端缓存策略(如 no-cache 强制验证缓存,max-age=3600 缓存 1 小时)
If-Modified-Since
基于资源修改时间的协商缓存(仅资源更新时返回完整内容,减少带宽消耗)
If-None-Match
基于 ETag 的协商缓存(比时间戳更精准的缓存验证)
Origin
跨域请求时标识来源域名(CORS 预检请求核心字段,用于服务器跨域校验)
Referer
记录请求来源页面 URL(用于防盗链、统计引流效果)
Range
请求资源的部分字节范围(实现断点续传,如大文件下载时指定 bytes=0-1023)
常见响应头
Status
响应状态码与文本(如 200 OK 表示成功,404 Not Found 表示资源不存在)
Content-Type
指定响应体格式及编码(如 application/json; charset=utf-8,避免中文乱码)
Content-Length
标识响应体字节大小(帮助客户端判断数据接收完成)
Content-Encoding
说明响应体压缩方式(如 gzip,客户端需对应解压)
Last-Modified
资源最后修改时间戳(配合请求头 If-Modified-Since 实现协商缓存)
ETag
资源唯一标识(配合请求头 If-None-Match 实现精准缓存验证)
Cache-Control
服务器指定客户端缓存策略(如 max-age=86400 缓存 1 天,no-store 禁止缓存)
Set-Cookie
向客户端设置 Cookie(如存储会话 ID、用户登录状态)
Location
重定向目标 URL(配合 3xx 状态码使用,如登录后跳转到首页)
Access-Control-Allow-Origin
允许跨域请求的来源域名(CORS 核心字段,如 * 允许所有域名)
Access-Control-Allow-Methods
允许跨域请求的 HTTP 方法(如 GET、POST、PUT)
Strict-Transport-Security(HSTS)
强制客户端后续使用 HTTPS 访问(提升站点安全性)
X-Frame-Options
防止点击劫持(如 SAMEORIGIN 仅允许同域页面嵌入)
Content-Security-Policy(CSP)
限制资源加载来源(防御 XSS、注入等攻击)
常见响应状态码
1xx 信息性状态码(临时响应,表示请求已接收)
2xx 成功状态码(请求已成功处理)
3xx 重定向状态码(需客户端进一步操作以完成请求)
4xx 客户端错误状态码(请求存在错误,服务器无法处理)
5xx 服务器错误状态码(服务器处理请求时发生内部错误)
