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

Linux -- HTTP 请求 与 响应 报文

目录

请求报文: 

请求方法

响应报文:

状态码 与 状态码描述 

共性

常见的报头


请求报文: 

请求方法

方法说明
GET获取资源
POST传输实体主体
PUT传输文件
HEAD获得报文首部
DELETE删除文件
OPTIONS询问支持的方法
TRACE追踪路径
CONNECT要求用隧道协议连接代理
LINK建立和资源之间的联系
UNLINK断开连接关系

响应报文:

如果服务器返回了一个 html 页面, 那么 html 页面内容 就是在 响应正文 中.

状态码 与 状态码描述 

分类状态码含义解释
信息性响应 (1xx):请求已被接收,继续处理。

100 

Continue初步请求已被接受,客户应当继续发送请求的剩余部分。
101 Switching Protocols服务器已经理解了客户端的请求,并将通过升级协议的方式继续处理。
成功响应 (2xx):动作已成功完成。

200 

OK请求成功,所请求的响应头或数据体将随此响应返回。
201 Created请求成功并且服务器创建了新的资源。
204 No Content请求成功但服务器没有需要返回的内容。
重定向响应 (3xx):需要进一步操作以完成请求。

301 

Moved Permanently请求的网页已永久移动到新位置。
302 Found请求的网页临时从不同的URL响应。
304 Not Modified自从上次请求后,请求的网页未被修改过。
客户端错误 (4xx):请求包含语法错误或者无法完成。

400 

Bad Request服务器无法处理由于客户端请求语法错误而导致的请求。
401 Unauthorized请求要求用户的身份认证。
403 Forbidden即使提供身份验证凭据,服务器也拒绝处理请求。
404 Not Found服务器找不到请求的网页。
服务器错误 (5xx):服务器未能完成明显有效的请求。500 Internal Server Error服务器遇到了一个未曾预料的情况,导致了它无法完成对请求的处理。
501 Not Implemented服务器不支持当前请求所需要的某个功能。
502 Bad Gateway服务器作为网关或代理,从上游服务器收到无效响应。
503 Service Unavailable服务器暂时无法处理请求,可能因为过载或维护。

共性

怎么分离报头和有效载荷?

空行可以保证在读取报头时,把报头读完。

怎么判断已经把正文读完?

在报头中,会记录正文的长度 Content-Length,在读取正文时,根据正文长度来判断是否已经把正文读完了。如果报文中没有正文,则不会出现该字段。

为什么需要 HTTP 版本?

一个应用会存在新老版本并存的情况,在更新新版本时,不仅客户端需要更新,服务器也需要更新,如果服务器都更新成新版本,但有的客户端还停留在旧版本,那么服务器给客户端提供服务时,也就是服务器和客户端在进行网络通信时,通信可能会出现问题,比如旧版本的客户端不支持新功能。为了确保客户端和服务器之间能够正确地通信,需要在HTTP报文中携带版本号,有了 HTTP 版本后,新版本的客户端就和新版本的服务器匹配,老版本的客户端就和老版本的服务器匹配。

常见的报头

Content-Type数据类型,常见的值包括 text/htmlapplication/jsonapplication/xml 等。
Content-Length正文的长度
Host客户端告知服务器,所请求的资源在哪个主机的哪个端口上
User-Agent声明用户的操作系统和浏览器版本信息
referer当前页面是从哪个页面跳转来的
Location搭配 3XX 状态码使用,告诉客户端接下来要去哪里访问
Cookie用于在客户端存储少量信息,通常用于实现会话(session)的功能

http://www.kler.cn/a/513217.html

相关文章:

  • Kotlin语言的数据结构
  • ChatGPT Prompt 编写指南
  • iOS UIScrollView的一个特性
  • 深度学习 DAY2:Transformer(一部分)
  • 2025 最新flutter面试总结
  • Python_CUDA入门教程学习记录
  • 网络安全等级保护基本要求——等保二级
  • 可以自己部署的微博 Mastodon
  • 【优选算法】4----盛最多水的容器
  • Docker可视化管理工具Portainer
  • GFPGAN - 腾讯开源的图形修复算法修复算法
  • 网络爬虫技术如何影响网络安全的
  • .NET Framework 4.5.1 离线安装包
  • DM8 SQL 错误 [22000]: 锁超时
  • Objective-C语言的函数实现
  • 深入探究 Java 异常处理
  • 探索微服务架构:从单体应用到微服务的转变
  • Netty的handler类无法进行spring的注入service等操作,注入为null情况
  • 将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch(1.标准版)
  • FPGA开发中的团队协作:构建高效协同的关键路径
  • WPF3-在xaml中引用其他程序集的名称空间
  • RestTemplate-调用远端接口应用场景
  • 根据经纬度查询地理位置信息API
  • React技术栈搭配(全栈)(MERN栈、PERN栈)
  • [Css]父元素监听鼠标移入子元素
  • Kotlin 2.1.0 入门教程(七)