每日一个计算机小知识: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 小时前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端
千寻技术帮5 小时前
10333_基于SpringBoot的家电进存销系统
java·spring boot·后端·源码·项目·家电进存销
dear_bi_MyOnly5 小时前
【多线程——线程状态与安全】
java·开发语言·数据结构·后端·中间件·java-ee·intellij-idea
小信丶6 小时前
@EnableTransactionManagement注解介绍、应用场景和示例代码
java·spring boot·后端
To Be Clean Coder6 小时前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重
java·后端·spring
-孤存-7 小时前
SpringBoot核心注解与配置详解
java·spring boot·后端
2301_818732067 小时前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
小王不爱笑1328 小时前
SpringBoot 整合 Ollama + 本地 DeepSeek 模型
java·spring boot·后端
2501_915106329 小时前
当 Perfdog 开始收费之后,我重新整理了一替代方案
android·ios·小程序·https·uni-app·iphone·webview
短剑重铸之日9 小时前
《设计模式》第七篇:适配器模式
java·后端·设计模式·适配器模式