当前位置: 首页 > news >正文

Linux:应用层协议HTTP

HTTP协议

在互联网世界中,HTTP(HyperText Transfer Protocol,超文本传输协议)是⼀个至关重要的协议。 它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本(如HTML文档)。
HTTP协议是客户端与服务器之间通信的基础。客户端通过HTTP协议向服务器发送请求,服务器收到请求后处理并返回响应。HTTP协议是⼀个无连接、无状态的协议,即每次请求都需要建立新的连接,且服务器不会保存客户端的状态信息。

认识URL

平时我们俗称的 "网址" 其实就是说的 URL

HTTP协议请求与响应格式

HTTP请求

⾸⾏: [⽅法] + [url] + [版本].
Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤ \r\n 分隔;遇到空⾏表示Header部分结束.
Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有—个 Content-Length属性来标识Body的⻓度;

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

HTTP响应

⾸⾏: [版本号] + [状态码] + [状态码解释]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\r\n分隔;遇到空⾏表⽰Header部分结束
Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个 Content-Length属性来标识Body的⻓度; 如果服务器返回了⼀个html页⾯, 那么html页⾯内容就是在body中.

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 238765
Date: Mon, 21 Oct 2024 02:00:00 GMT
Server: BWS/1.0<!DOCTYPE html>
<html>
<head><title>百度一下,你就知道</title>... (这里是完整的百度首页HTML代码)
</head>
<body>... (页面内容)
</body>
</html>

HTTP方法

其中最常⽤的就是GET⽅法和POST⽅法

HTTP常见方法

1.GET方法
⽤途:⽤于请求URL指定的资源。
示例: GET /index.html HTTP/1.1
特性:指定资源经服务器端解析后返回响应内容。

2.POST方法
⽤途:⽤于传输实体的主体,通常⽤于提交表单数据。
示例: POST /submit.cgi HTTP/1.1
特性:可以发送⼤量的数据给服务器,并且数据包含在请求体中。

HTTP的状态码

最常见的状态码, ⽐如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad
Gateway)

分类

状态码

状态文本

含义

应用场景或解释

​信息响应​

100

Continue

继续

客户端应继续其请求。常用于在发送大请求体前,确认服务器是否愿意接收。

​(1xx)​

101

Switching Protocols

切换协议

服务器应客户端请求,正在切换协议(如从 HTTP 升级到 WebSocket)。

102

Processing

处理中

服务器已收到请求,但处理过程尚未完成,防止客户端超时。

​成功​

​200​

​OK​

​请求成功​

标准成功响应。GET 请求返回资源,POST 请求返回操作结果。

​(2xx)​

201

Created

已创建

请求成功,并在服务器创建了新的资源(如 POST 创建新文章)。

202

Accepted

已接受

请求已接受,但处理尚未完成。适用于异步任务。

204

No Content

无内容

服务器成功处理请求,但不需要返回任何内容(如 DELETE 请求)。

​重定向​

​301​

​Moved Permanently​

​永久移动​

请求的资源已被​​永久​​移动到新 URL。搜索引擎会更新链接。

​(3xx)​

​302​

​Found​

​临时移动​

请求的资源被​​临时​​移动到新 URL。搜索引擎不会记录新链接。

304

Not Modified

未修改

所请求的资源自上次请求后未更改,客户端可直接用缓存。

307

Temporary Redirect

临时重定向

与 302 类似,但保证重定向时请求方法和体不会改变。

308

Permanent Redirect

永久重定向

与 301 类似,但保证重定向时请求方法和体不会改变。

​客户端错误​

​400​

​Bad Request​

​错误请求​

服务器因客户端错误(如语法错误)无法理解请求。

​(4xx)​

​401​

​Unauthorized​

​未认证​

请求需要身份验证。客户端需提供有效的身份凭证(如登录)。

​403​

​Forbidden​

​禁止访问​

服务器理解请求,但​​拒绝执行​​(已认证,但权限不足)。

​404​

​Not Found​

​未找到​

服务器找不到请求的资源。

​服务器错误​

​500​

​Internal Server Error​

​内部服务器错误​

服务器遇到意外情况,无法完成请求(通常是服务器端代码 Bug)。

​(5xx)​

​501​

​Not Implemented​

​未实现​

服务器不支持完成请求所需的功能。

​502​

​Bad Gateway​

​错误网关​

作为网关或代理的服务器,从上游服务器收到了无效响应。

​503​

​Service Unavailable​

​服务不可用​

服务器暂时过载或正在维护,无法处理请求。

重定向相关:

状态码

状态文本

是否为临时重定向?

应用样例与关键区别

​301​

Moved Permanently

​否​​(永久重定向)

​网站更换域名​​。旧域名所有请求应使用301跳转到新域名。
​关键点​​:​​搜索引擎会将权重和排名转移​​到新URL。客户端(浏览器)可能会将后续请求直接发送到新地址。

​302​

Found

​是​​(临时重定向)

​用户登录成功后,临时重定向到首页​​。
​关键点​​:​​搜索引擎会保留原始URL的排名​​。这是最常用的​​临时​​重定向,但规范不要求客户端保持原请求方法(如POST可能变为GET)。

​307​

Temporary Redirect

​是​​(临时重定向)

需要​​确保客户端在重定向时,原请求方法和报文体不变​​的场景。
​关键点​​:与302类似,但更严格。如果原始请求是POST,重定向后的请求也必须是POST。适用于非GET请求的临时重定向。

​308​

Permanent Redirect

​否​​(永久重定向)

需要​​确保客户端在重定向时,原请求方法和报文体不变​​的场景。
​关键点​​:与301类似,但更严格。如果原始请求是POST,所有后续请求都必须是POST到新URL。适用于非GET请求的永久重定向。

HTTP状态码301(永久重定向)和302(临时重定向)都依赖Location选项。以下是关于两者依赖
Location选项的详细说明:
HTTP状态码301(永久重定向)
当服务器返回HTTP 301状态码时,表⽰请求的资源已经被永久移动到新的位置。
在这种情况下,服务器会在响应中添加⼀个Location头部,⽤于指定资源的新位置。这个Location 头部包含了新的URL地址,浏览器会⾃动重定向到该地址。
例如,在HTTP响应中,可能会看到类似于以下的头部信息:
HTTP/1.1 301 Moved Permanently\r\n
Location: https://www.new-url.com\r\n
HTTP状态码302(临时重定向)
当服务器返回HTTP 302状态码时,表⽰请求的资源临时被移动到新的位置。
同样地,服务器也会在响应中添加⼀个Location头部来指定资源的新位置。浏览器会暂时使⽤新的 URL进⾏后续的请求,但不会缓存这个重定向。
例如,在HTTP响应中,可能会看到类似于以下的头部信息:
HTTP/1.1 302 Found\r\n
Location: https://www.new-url.com\r\n
总结:⽆论是HTTP 301还是HTTP 302重定向,都需要依赖Location选项来指定资源的新位置。这个Location选项是⼀个标准的HTTP响应头部,⽤于告诉浏览器应该将请求重定向到哪个新的URL地址。

HTTP常见Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的⻓度
  • Host: 客⼾端告知服务器, 所请求的资源是在哪个主机的哪个端⼝上;
  • User-Agent: 声明⽤⼾的操作系统和浏览器版本信息;
  • Referer: 当前页⾯是从哪个页⾯跳转过来的;
  • Location: 搭配3xx状态码使⽤, 告诉客⼾端接下来要去哪⾥访问;
  • Cookie: ⽤于在客⼾端存储少量信息. 通常⽤于实现会话(session)的功能;
关于connection报头
HTTP中的 Connection 字段是HTTP报文头的⼀部分,它主要⽤于控制和管理客户端与服务器之间
的连接状态
核心作用
管理持久连接: Connection 字段还⽤于管理持久连接(也称为⻓连接)。持久连接允许客户端和服务器在请求/响应完成后不⽴即关闭TCP连接,以便在同⼀个连接上发送多个请求和接收多个响应。
持久连接(⻓连接)
HTTP/1.1:在HTTP/1.1协议中,默认使⽤持久连接。当客户端和服务器都不明确指定关闭连接 时,连接将保持打开状态,以便后续的请求和响应可以复⽤同⼀个连接。
HTTP/1.0:在HTTP/1.0协议中,默认连接是⾮持久的。如果希望在HTTP/1.0上实现持久连接,需
要在请求头中显式设置 Connection: keep-alive
语法格式
Connection: keep-alive :表⽰希望保持连接以复⽤TCP连接。
Connection: close :表⽰请求/响应完成后,应该关闭TCP连接。
http://www.dtcms.com/a/474249.html

相关文章:

  • .Net Core上传组件7.2
  • 网站建设公司哪家好 在线磐石网络什么网站做学校设计
  • 模电基础:放大电路的频率响应(2)
  • 【力扣】hot100系列(三)贪心(多解法+时间复杂度分析)
  • 科讯网站模版网如何把自己的网站推广出去
  • 阿里云存储服务OSS对象存储的简单使用
  • P5522 yLOI2019 棠梨煎雪
  • 建站专家wordpress 获取当前路径
  • 天津网站推广如何做一款app需要多少钱
  • 服务器放网站吗高端保姆
  • H7-TOOL RTOS Trace功能的RTX5检测增加最大任务栈使用情况检测,不需要目标板额外做任何代码实时监测
  • android usb摄像头无法缩放问题
  • 高安版_中兴B860AV3.2M_晶晨S905L3B_安卓9_兼容uwe5621ds无线-线刷固件包
  • 北京手机网站开发费用用系统建购物网站
  • linux中tee解析
  • 媒体的分类层次
  • Get请求和Post请求区别
  • 搭建网站商城医院网站推广渠道
  • 从零复现论文(2)——:基于启发式优化的无线传感器网络WSN功率分配策略
  • 【Swift】LeetCode 283. 移动零
  • 【Java数据结构】冒泡排序编码关键细节与避坑指南
  • DPDK中的BitMap测试
  • 网站制作合作2023企业税收标准
  • Windchill中afterVK的写法示例
  • 《红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》 第12篇 | 接入网重构:从eNodeB到gNodeB——C-RAN与“下沉”
  • so域名的网站有哪些wordpress主题恢复出厂设置
  • Maven中的settings.xml文件配置详解
  • 南昌制作企业网站湘潭网站建设 安全还踏实磐石网络
  • 我设计的数字编码
  • 从分片到可编程网卡——【网络编程】详解 IP 协议:报头字段、路由器功能、网段划分和分片传输