欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Linux——网络(http协议)

Linux——网络(http协议)

2025/2/11 4:45:44 来源:https://blog.csdn.net/2301_80687320/article/details/145525659  浏览:    关键词:Linux——网络(http协议)

目录

一、HTTP 请求格式

1. 请求行(Request Line)

2. 请求头(Request Headers)

3. 空行

4. 请求正文(Request Body)

二、HTTP 响应格式

1. 状态行(Status Line)

2.HTTP 状态码分类

一、1xx 信息性状态码

二、2xx 成功状态码

三、3xx 重定向状态码

四、4xx 客户端错误状态码

五、5xx 服务器错误状态码

3. 响应头(Response Headers)

4. 空行

5. 响应正文(Response Body)

三、其他重要字段

1. 通用头(General Headers)

2. 安全相关头

3. 缓存控制

4. 自定义头

四、示例

HTTP 请求示例

HTTP 响应示例

五、总结


一、HTTP 请求格式

1. 请求行(Request Line)

格式:<方法> <请求目标> HTTP/<版本>

  • 方法(Method)

    • GET:获取资源。

    • POST:提交数据。

    • PUT:更新资源。

    • DELETE:删除资源。

    • HEAD:获取响应头(不返回正文)。

    • OPTIONS:查询服务器支持的 HTTP 方法。

  • 我们90%的方法都是GET和POST方法,其中GET方法占80%,那么这两个协议有什么区别呢?

  •    <form action="./a/b/lixuejiao.html" method="post">QQ号: <input type="text" name="name"><br>密码: <input type="password" name="passwd"><br><input type="submit" value="提交"></form>

这里我们用的是post的方法,然后代码运行起来发现是在空行下面以正文的方式显示出来的;

接下来我们改成get方法

 

我们发现它是在url当中的,这就是两个方法的不同之处; 

  • 请求目标:通常是 URL 的路径(如 /index.html)。

  • 版本:如 HTTP/1.1 或 HTTP/2

2. 请求头(Request Headers)

  • Host(必填):目标服务器域名和端口(如 Host: example.com:80)。HTTP/1.1 强制要求。

  • User-Agent:客户端标识(如浏览器类型);都是客户端的设备信息和浏览器

  • Accept:客户端能接收的响应内容类型(如 Accept: text/html)。

  • Accept-Encoding:支持的压缩算法(如 gzip, deflate)。

  • Accept-Language:优先语言(如 en-US, zh-CN)。

  • Content-Type:请求正文的 MIME 类型(如 application/json)。

  • Content-Length:请求正文的字节长度。

  • Authorization:认证信息(如 Bearer token)。

  • Cookie:客户端发送的 Cookie;这个信息就是我们在登录某些网页登录完成以后下次登录免登录的原因;当我们把这个信息删除以后就需要重新登录了。

  • Referer:当前请求的来源页面 URL。

  • Cache-Control:缓存策略(如 no-cache)。

3. 空行

  • 分隔请求头和请求正文(\r\n)。

4. 请求正文(Request Body)

  • 仅在 POSTPUT 等方法中包含数据(如 JSON、表单数据)。


二、HTTP 响应格式

1. 状态行(Status Line)

格式:HTTP/<版本> <状态码> <状态短语>

  • 版本:如 HTTP/1.1

  • 状态码

    • 1xx:信息类(如 101 Switching Protocols)。

    • 2xx:成功(如 200 OK201 Created)。

    • 3xx:重定向(如 301 Moved Permanently304 Not Modified)。

    • 4xx:客户端错误(如 400 Bad Request404 Not Found)。

    • 5xx:服务器错误(如 500 Internal Server Error)。

  • 状态短语:对状态码的文本描述。

2.HTTP 状态码分类

分类范围描述
1xx100-199信息性状态码:请求已被接收,继续处理。
2xx200-299成功状态码:请求已被成功处理。
3xx300-399重定向状态码:需要客户端进一步操作。
4xx400-499客户端错误:请求包含错误或无法完成。
5xx500-599服务器错误:服务器处理请求失败。

一、1xx 信息性状态码
状态码状态短语说明
100Continue客户端应继续发送请求体(用于大文件上传前的确认)。
101Switching Protocols服务器同意切换协议(如升级到 WebSocket)。
102Processing服务器已接收请求,但处理尚未完成(用于异步操作)。
103Early Hints预加载资源提示(在最终响应前返回部分头信息)。

二、2xx 成功状态码
状态码状态短语说明
200OK请求成功,响应中包含结果(如 GET 请求返回数据)。
201Created资源创建成功(常用于 POST 请求)。
202Accepted请求已接受,但处理尚未完成(如异步任务)。
204No Content请求成功,但无返回内容(如 DELETE 请求)。
206Partial Content部分内容(用于分块下载或断点续传)。

三、3xx 重定向状态码
状态码状态短语说明
301Moved Permanently资源永久重定向到新 URL(浏览器会缓存)。
302Found资源临时重定向到新 URL(浏览器不缓存)。
304Not Modified资源未修改(客户端可使用缓存副本)。
307Temporary Redirect临时重定向,要求客户端保持原请求方法(如 POST)。
308Permanent Redirect永久重定向,要求客户端保持原请求方法。

四、4xx 客户端错误状态码
状态码状态短语说明
400Bad Request请求格式错误(如参数缺失或语法错误)。
401Unauthorized未认证(需提供有效凭证,如登录后重试)。
403Forbidden无权限访问资源(认证成功但权限不足)。
404Not Found资源不存在(URL 路径错误或资源已删除)。
405Method Not Allowed请求方法不被允许(如用 GET 访问只支持 POST 的接口)。
408Request Timeout请求超时(服务器等待超时)。
409Conflict请求与服务器当前状态冲突(如重复提交)。
413Payload Too Large请求体过大(如上传文件超过限制)。
415Unsupported Media Type不支持的媒体类型(如 Content-Type 错误)。
429Too Many Requests请求频率过高(触发限流)。

五、5xx 服务器错误状态码
状态码状态短语说明
500Internal Server Error服务器内部错误(代码异常或配置问题)。
501Not Implemented服务器不支持请求的功能(如未实现的 HTTP 方法)。
502Bad Gateway网关或代理服务器收到无效响应(上游服务不可用)。
503Service Unavailable服务暂时不可用(如维护或过载)。
504Gateway Timeout网关超时(上游服务未及时响应)。
507Insufficient Storage服务器存储空间不足(如上传文件时磁盘已满)。

3. 响应头(Response Headers)

  • Server:服务器软件信息(如 Server: Apache/2.4.1)。

  • Content-Type:响应正文的 MIME 类型(如 text/html; charset=utf-8)。

  • Content-Length:响应正文的字节长度。

  • Content-Encoding:正文使用的压缩算法(如 gzip)。

  • Cache-Control:缓存策略(如 max-age=3600)。

  • Set-Cookie:服务器向客户端设置 Cookie。

  • Location:重定向目标 URL(用于 3xx 状态码)。

  • Access-Control-Allow-Origin:允许跨域请求的源(如 *)。

  • Expires:响应过期时间(已逐渐被 Cache-Control 取代)。

4. 空行

  • 分隔响应头和响应正文(\r\n)。

5. 响应正文(Response Body)

  • 返回的数据(如 HTML、JSON、图片等)。


三、其他重要字段

1. 通用头(General Headers)

适用于请求和响应:

  • Date:消息生成的日期时间。

  • Connection:控制连接行为(如 keep-alive 或 close);也就是我们数据是长链接还是短链接,当我们打开一个有100张照片页面时,长链接是我们一次性将照片和index页面加载过去;而短链接是需要发送101次请求;

  • Transfer-Encoding:传输编码方式(如 chunked 分块传输)。

2. 安全相关头

  • Strict-Transport-Security (HSTS):强制使用 HTTPS。

  • Content-Security-Policy (CSP):限制资源加载来源。

  • X-Content-Type-Options: 禁止 MIME 嗅探(如 nosniff)。

3. 缓存控制

  • ETag:资源的唯一标识符(用于缓存验证)。

  • Last-Modified:资源最后修改时间(与 If-Modified-Since 配合使用)。

4. 自定义头

  • 以 X- 开头的自定义头(如 X-Request-ID)。


四、示例

HTTP 请求示例

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html, application/xhtml+xml
Accept-Language: en-US
Connection: keep-alive

HTTP 响应示例

HTTP/1.1 200 OK
Server: nginx/1.18.0
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Cache-Control: max-age=3600
Set-Cookie: session_id=abc123; Path=/<!DOCTYPE html>
<html>...</html>

五、总结

HTTP 的每个字段都有明确的用途,合理设置这些字段可以:

  1. 优化缓存策略(如 Cache-Control)。

  2. 提升安全性(如 Content-Security-Policy)。

  3. 支持跨域请求(如 Access-Control-Allow-Origin)。

  4. 管理会话状态(如 Cookie 和 Set-Cookie)。

理解这些字段有助于调试网络请求、优化性能和解决安全问题。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com