每日一个计算机小知识:HTTP

每日分享一个有趣的计算机小知识,今日话题: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 服务器错误状态码(服务器处理请求时发生内部错误)

相关推荐
子玖2 小时前
go实现通过ip解析城市
后端·go
Java不加班3 小时前
Java 后端定时任务实现方案与工程化指南
后端
心在飞扬3 小时前
RAG 进阶检索学习笔记
后端
Moment3 小时前
想要长期陪伴你的助理?先从部署一个 OpenClaw 开始 😍😍😍
前端·后端·github
Das1_3 小时前
【Golang 数据结构】Slice 底层机制
后端·go
得物技术3 小时前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
古时的风筝3 小时前
花10 分钟时间,把终端改造成“生产力武器”:Ghostty + Yazi + Lazygit 配置全流程
前端·后端·程序员
Cache技术分享3 小时前
340. Java Stream API - 理解并行流的额外开销
前端·后端
初次攀爬者3 小时前
RocketMQ 消息可靠性保障与堆积处理
后端·消息队列·rocketmq