首页 > 其他分享 >HTTP协议详解以及常见的状态码

HTTP协议详解以及常见的状态码

时间:2024-09-20 22:49:12浏览次数:10  
标签:HTTP 请求 常见 响应 详解 服务器 浏览器 客户端

HTTP协议的定义:

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种建立在TCP(传输控制协议)之上的无状态连接协议。它是互联网的基础协议之一,用于客户端与服务器之间的通信。HTTP规定了客户端和服务器之间通信的格式,包括请求与响应的格式,使得网络上的资源(如HTML文件、图片、查询结果等)能够得以传输和展示。

HTTP的使用方法:

客户端和服务器之间的通信由requests和responses完成:

在这里插入图片描述

客户端(浏览器)向网络发送 HTTP 请求
网络服务器接收请求
服务器运行应用程序来处理请求
服务器向浏览器返回 HTTP 响应(输出)
客户端(浏览器)接收响应
HTTP 请求/响应循环

一个典型的HTTP请求/响应循环

浏览器请求一个 HTML 页面。 服务器返回一个 HTML 文件。
浏览器请求样式表。 服务器返回一个 CSS 文件。
浏览器请求 JPG 图片。 服务器返回一个 JPG 文件。
浏览器请求 JavaScript 代码。 服务端返回一个JS文件
浏览器请求数据。 服务器返回数据(以 XML 或 JSON 格式)。

HTTP请求方法:

在这里插入图片描述

请求报文和响应报文的形式:

请求报文由以下几个部分组成:

  1. 请求行:包含请求方法(如GET、POST)、请求资源的URL和HTTP协议版本(如HTTP/1.1)。
  2. 请求头:包含一系列的键值对,用于描述请求的各种属性,如客户端类型(User-Agent)、请求来源(Referer)等。
  3. 空行:用于分隔请求头和请求体。
  4. 请求体(可选):包含发送给服务器的数据,如POST请求中的表单数据。

例如,一个GET请求的报文可能如下:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

响应报文也由几个部分组成:

  1. 状态行:包含HTTP协议版本、状态码和状态描述。
  2. 响应头:包含一系列的键值对,用于描述响应的各种属性,如服务器类型(Server)、内容类型(Content-Type)等。
  3. 空行:用于分隔响应头和响应体。
  4. 响应体(可选):包含服务器返回给客户端的数据,如HTML页面、图片等。

例如,一个200 OK的响应报文可能如下:

HTTP/1.1 200 OK
Date: Mon, 21 Oct 2021 08:30:45 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Tue, 29 Dec 2020 07:26:13 GMT
ETag: "0-6166700c"
Content-Type: text/html
Content-Length: 5804
Connection: close

<!doctype html>
<html>
<head>
<title>Example Web Page</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is an example web page</p>
</body>
</html>

HTTP状态码:

HTTP状态码是服务器在响应客户端请求时返回的三位数字代码,用于表示请求的处理结果和状态。状态码分为五类:

在这里插入图片描述

常见的状态码类型

1xx(信息性状态码):

100 Continue 继续。客户端应继续其请求
101 Switching Protocols 切换协议。

2xx(成功状态码):

200 OK 请求成功。一般用于GET与POST请求
202 Accepted 已接受。已经接受请求,但未处理完成
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
206 Partial Content 部分内容。服务器成功处理了部分GET请求

3xx(重定向状态码):

301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303 See Other 查看其它地址。与301类似。使用GET和POST请求查看
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

4xx(客户端错误状态码):

400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405 Method Not Allowed 客户端请求中的方法被禁止

5xx(服务器错误状态码):

500 Internal Server Error 服务器内部错误,无法完成请求
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

标签:HTTP,请求,常见,响应,详解,服务器,浏览器,客户端
From: https://blog.csdn.net/qq_63447955/article/details/142386887

相关文章

  • 【Redis入门到精通二】Redis核心数据类型(String,Hash)详解
    目录Redis数据类型1.String类型 (1)常见命令(2)内部编码2.Hash类型(1)常见命令(2)内部编码Redis数据类型    查阅Redis官方文档可知,Redis提供给用户的核心数据类型有以下九个,从上到下依次是字符串,哈希,列表,集合,有序集合,流,位图,位域,地址空间。因为Redis本身就是通......
  • 网络高级(http)
    1、HTTP基于WebServer的工业数据采集项目1.1、http简介HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于WebBrowser(浏览器)到WebServer(服务器)进行数据交互的传输协议。HTTP是应用层协议HTTP是一个基于TCP通信协议传输来传递数据(HTML文件,图片文......
  • Docker详解
    一、概念Docker是一个开源的容器化平台,它可以使我们避免部署对服务器环境的依赖,减少复杂的部署流程。它允许开发者将应用程序及其依赖项打包到一个轻量级,可移植的容器中,然后在任何支持Docker的环境中运行。Docker的出现极大地简化了应用程序的部署和管理,使得开发、测试和生产......
  • 常见的设计模式
    单例模式(饿汉和懒汉)//饿汉式单例模式includeusingnamespacestd;classson{public:son(constson&)=delete;son&operator=(constson&)=delete;son(constson&&)=delete;son&operator=(constson&&)=delete;staticson&getinsta......
  • 求Huffman树及其matlab程序详解
    #################本文为学习《图论算法及其MATLAB实现》的学习笔记#################算法用途求Haffman树算法思想根据定理4.17,给出求Huffman树的算法步骤如下:①对给出的所要求的叶子顶点的权进行从小到大排序,写出的权重向量 ;②根据定理4.17,写出兄弟的权重分别为......
  • 【Webpack】三种模式详解
    文章目录一、Webpack模式概述1.模式的作用2.配置模式二、开发模式(development)1.开发模式的特点开发模式的主要特点包括:2.开发模式的配置3.开发模式的实际应用三、生产模式(production)1.生产模式的特点生产模式的主要特点包括:2.生产模式的配置3.生产模式的实......
  • 一文详解Unity下RTMP推送|轻量级RTSP服务|RTSP|RTMP播放模块说明
    技术背景好多开发者,对Unity下的模块,不甚了解,实际上,除了Windows/Linux/Android/iOSNativeSDK,大牛直播SDK发布了Unity环境下的RTMP推流|轻量级RTSP服务(Windows平台+Linux平台+Android平台)和RTMP|RTSP直播播放(Windows、Linux、Android和iOS平台全覆盖)低延迟的解决方案。目前,大牛直播......
  • 编程基础:常量、变量与字面量详解
    摘要:文章介绍了编程基础:变量可变,常量不变,字面量是初始赋值。我们在学习编程的时候,经常听到这3个词:常量变量字面量那么它们是什么意思呢?我们写2行代码,来帮助我们理解。inta=666;constintb=777;变量在第1行代码中,a是变量,666是字面量。或者我们可以说,变量a的初始值是......
  • 【Webpack】处理CSS资源详解
    文章目录一、Webpack处理CSS的基本概念1.Webpack中的CSS处理2.`Loader`的作用二、配置Webpack处理CSS资源1.基本配置2.使用`MiniCssExtractPlugin`提取CSS3.处理Sass或Less等预处理器4.使用PostCSS处理CSS三、CSSModules的使用1.CSSModules概述2.配置CSSMo......
  • 产品设计详解 - AxureMost
    产品设计详解-AxureMost产品设计详解-AxureMost产品设计的可用性影响着用户体验,在交互过程中,除了可用性外,用户还会经历一种更加微妙的纯主观的心理和情感体验,这种体验难以表达和度量,却极大地影响了用户体验。本章从可用性、心流、沉浸感、情感和美感5个方面来介绍对......