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

相关推荐
小Ti客栈5 小时前
Spring Boot 集成 Springdoc-OpenAPI 与 Knife4j实现接口文档与可视化调试
java·spring boot·后端
Ai拆代码的曹操5 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密
java·后端·spring
IT_陈寒7 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱7 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
Wang's Blog7 小时前
Go-Zero项目开发24: 基于Bitmap实现群聊消息已读未读
开发语言·后端·golang
Conan在掘金8 小时前
鸿蒙报错速查:struct 里嵌 namespace 声明就炸,根因 + 真解法
后端
东方小月8 小时前
从零开发一个 Coding Agent(三):EventStream 事件流通道设计与实现
前端·人工智能·后端
卫子miao8 小时前
如何评价当前大语言模型的记忆机制?
后端·架构
神奇小汤圆9 小时前
为什么 AQS 成为 Java 并发的基石?
后端
会编程的土豆10 小时前
MySQL 入门:库、表、行、主键是什么
linux·数据库·网络协议·http