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

相关推荐
武子康3 小时前
大数据-135 ClickHouse 集群连通性自检 + 数据类型避坑实战|10 分钟跑通 ON CLUSTER
大数据·分布式·后端
咖啡教室3 小时前
每日一个计算机小知识:TCP
后端·tcp/ip
coderhuo4 小时前
libuv spin空转导致的cpu消耗问题
后端
绝无仅有4 小时前
用友面试题解析:项目介绍、Dubbo、MQ、分布式事务、分布式锁等
后端·面试·github
绝无仅有5 小时前
京东面试题解析:SSO、Token与Redis交互、Dubbo负载均衡等
后端·面试·github
懒惰蜗牛5 小时前
Day44 | J.U.C中的LockSupport详解
java·开发语言·后端·java-ee
Mintopia6 小时前
🧠 Next.js 还是 Nuxt.js?——当 JavaScript 碰上命运的分叉路
前端·后端·全栈
paishishaba6 小时前
HTTP、HTTPS 和 WebSocket 协议和开发
websocket·http·https·实时聊天
GilgameshJSS6 小时前
STM32H743-ARM例程29-HTTP
c语言·arm开发·stm32·单片机·http