首页 > 其他分享 >HTTP协议的基本概念

HTTP协议的基本概念

时间:2023-04-20 18:45:14浏览次数:34  
标签:协议 HTTP 请求 application 响应 服务器 基本概念 客户端

HTTP协议简介

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(例如 HTML)的应用层协议。HTTP 协议是一个无状态的协议,意味着服务器并不会记住任何之前的请求和响应。

HTTP 协议基于客户端-服务器架构模型,客户端发送一个请求到服务器,然后服务器处理请求并发送响应回客户端。

HTTP 协议采用了请求-响应模型,客户端向服务器发送请求,服务器收到请求后返回响应。请求和响应都包含了一个或多个头信息(header),以及一个可选的消息体(message body)。请求头包含了请求的方法(例如 GET、POST),URI(Uniform Resource Identifier,统一资源标识符)、协议版本等信息。响应头包含了响应状态码(例如 200 OK,404 Not Found),响应类型、服务器信息等。消息体包含了具体的请求或响应的内容。

HTTP协议的结构

请求和响应两大块组成

请求:请求行,请求头,空行,请求体

响应:状态行,响应头,空行,响应体

  1. 请求头(Request Header):包含了客户端发送请求时的一些附加信息,例如浏览器类型、编码格式、支持的压缩方法等等。请求头位于HTTP请求的第一行,通常以键值对的形式出现。

  2. 请求体(Request Body):对于POST请求来说,请求头之后还会有一个空行,随后是请求体,也就是客户端提交的数据。例如,表单数据、JSON数据等等。

  3. 响应头(Response Header):包含了服务器返回响应时的一些附加信息,例如返回数据的类型、编码格式、长度、缓存策略等等。响应头位于HTTP响应的第一行,也是以键值对的形式出现。

  4. 响应体(Response Body):服务器返回的实际数据,例如HTML页面、JSON数据等等。

HTTP请求头信息可以包括以下内容:

  • Accept: 告诉服务器客户端能够处理的媒体类型(MIME类型)和优先级顺序。
  • Accept-Charset: 告诉服务器客户端能够处理的字符集(比如utf-8)和优先级顺序。
  • Accept-Encoding: 告诉服务器客户端支持的压缩算法(比如gzip)和优先级顺序。
  • Authorization: 包含对客户端进行身份验证的凭据,通常是用户名和密码的base64编码。
  • Cache-Control: 控制请求/响应的缓存行为。
  • Connection: 控制是否保持连接以及如何处理连接的特定参数。
  • Content-Length: 发送的请求正文的长度。
  • Content-Type: 发送的请求正文的MIME类型。
  • Cookie: 包含之前设置的Cookie,通常用于在服务器上保持用户状态。
  • Host: 请求的主机名和端口号,如www.example.com:80。
  • User-Agent: 告诉服务器客户端的操作系统、浏览器、应用程序等信息。

HTTP响应头信息:

  1. Content-Type:指定响应中的文档类型,如"text/html"表示HTML文档、"application/json"表示JSON数据等。
  2. Content-Length:指定响应正文的长度。
  3. Cache-Control:指定客户端和服务器之间如何缓存响应,如"no-cache"表示每次请求都要从服务器获取最新数据,"max-age=3600"表示可以缓存1小时。
  4. Server:指定服务器的类型,如"Apache"、"nginx"等。
  5. Date:指定响应发送的日期和时间。
  6. Connection:指定客户端和服务器之间如何保持连接,如"keep-alive"表示保持连接不断开。
  7. Content-Encoding:指定响应正文的编码方式,如"gzip"、"deflate"等。
  8. Set-Cookie:指定在客户端存储的cookie信息,用于下一次请求时携带该cookie信息。

HTTP 状态码:

  • 200 - 请求成功
  • 301 - 资源(网页等)被永久转移到其它URL
  • 404 - 请求的资源(网页等)不存在
  • 500 - 内部服务器错误

常见的请求方法:

  • GET:从服务器获取资源
  • POST:向服务器提交资源
  • PUT:在服务器上创建或更新资源
  • DELETE:从服务器上删除资源
  • HEAD:与 GET 方法类似,但只返回资源的头部信息
  • OPTIONS:获取服务器支持的请求方法和资源操作

Content-Type(内容类型):

常见的媒体格式类型如下:

  • text/html : HTML格式
  • text/plain :纯文本格式
  • text/xml : XML格式
  • image/gif :gif图片格式
  • image/jpeg :jpg图片格式
  • image/png:png图片格式

以application开头的媒体格式类型:

  • application/xhtml+xml :XHTML格式
  • application/xml: XML数据格式
  • application/atom+xml :Atom XML聚合格式
  • application/json: JSON数据格式
  • application/pdf:pdf格式
  • application/msword : Word文档格式
  • application/octet-stream : 二进制流数据(如常见的文件下载)
  • application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

  • multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式

MINIE类型

MIME类型(MIME type)是指在互联网上标识文件格式及对应应用程序的一种标准化方式。它由类型和子类型两部分组成,中间用斜杠(/)隔开,例如text/html、image/jpeg、application/json等。

常见的 MIME 类型

  • 超文本标记语言文本 .html、.html:text/html

  • 普通文本 .txt: text/plain

  • RTF 文本 .rtf: application/rtf

  • GIF 图形 .gif: image/gif

  • JPEG 图形 .jpeg、.jpg: image/jpeg

  • au 声音文件 .au: audio/basic

  • MIDI 音乐文件 mid、.midi: audio/midi、audio/x-midi

  • RealAudio 音乐文件 .ra、.ram: audio/x-pn-realaudio

  • MPEG 文件 .mpg、.mpeg: video/mpeg

  • AVI 文件 .avi: video/x-msvideo

  • GZIP 文件 .gz: application/x-gzip

  • TAR 文件 .tar: application/x-tar

HTTP协议的使用

  1. 建立连接:客户端与服务器之间建立TCP连接。
  2. 发送请求:客户端发送HTTP请求,请求包括请求方法、请求头、请求体等信息。
  3. 接收请求:服务器接收到客户端发送的HTTP请求。
  4. 处理请求:服务器根据请求方法、请求头等信息来处理请求,并返回相应的结果。
  5. 发送响应:服务器向客户端发送HTTP响应,响应包括响应头、响应体等信息。
  6. 接收响应:客户端接收到服务器发送的HTTP响应。
  7. 处理响应:客户端根据响应头、响应体等信息来处理响应。

标签:协议,HTTP,请求,application,响应,服务器,基本概念,客户端
From: https://www.cnblogs.com/liyiyang/p/17337925.html

相关文章

  • QUIC协议 对比 TCP/UDP 协议
    QUIC协议是HTTP3引入的,所以需要了解HTTP的版本迭代。HTTP1.x队头阻塞:下个请求必须在前一个请求返回后才能发出,导致带宽无法被充分利用,后续请求被阻塞(HTTP1.1尝试使用流水线(Pipelining)技术,但先天FIFO(先进先出)机制导致当前请求的执行依赖于上一个请求执行的完成,容易引起队头阻......
  • day 04 4.1web开发核心之http协议
    web开发核心之http协议http协议1.什么是请求头请求体,响应头响应体2.URL地址包括什么3.get请求和post请求到底是什么4.Content-Type是什么【一】简介HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于万维网(WWW:WorldWideWeb)服务器与本地浏览......
  • asp.net程序通过Microsoft Azure中SAML协议实现单点登录
    1.新建应用程序登录Azure门户,进入左侧菜单“企业应用程序--所有应用程序”,点“新建应用程序”,继续点“创建你自己的应用程序”,如下图选择和录入名称:填好应用的名称、想要如何处理应用程序必须选择第三个“继承未在库中找到的任何其他应用程序(非库)”,之后点“创建”按钮;2.单......
  • HTTP和TCP协议的队头阻塞
    队头阻塞(Head-of-lineblocking)其实有两种,一种是 TCP队头阻塞,另一种是 HTTP队头阻塞,而这两者之前其实还存在一定的联系,毕竟 HTTP1/2是建立在TCP协议之上的应用层协议,另外还有HTTP3对队头阻塞的解决。 1、HTTP/1.x的队头阻塞HTTP/1.x有个问题叫队头阻塞,即一个连接同......
  • 轻松应对同一IP被封禁的问题:HTTP代理对于爬虫的重要性
    在网络爬虫的世界里,遇到IP被封禁的问题是非常普遍的。不过,我们可以采取一些措施来应对这个问题,其中一个重要的措施就是使用HTTP代理。HTTP代理是一种能够隐藏真实IP地址并改变访问路径的技术,它可以将爬虫的请求发送到代理服务器中,再由代理服务器向目标服务器发起请求,从而避......
  • 从根源上解决反爬虫问题——HTTP代理的应用
    你是不是经常遇到在爬取网站数据时被封IP,或者访问速度过慢的情况呢?这就是因为网站为了保护自己的数据不被恶意利用,采取了反爬虫技术。但是,现在有一种解决方法——HTTP代理。HTTP代理可以将你的请求都转发到一个代理服务器上,然后由代理服务器再去访问目标网站。这样的好处在......
  • 利用HttpClient下载图片
    评:最近在项目中用到了HttpClient类库,有一个需求是下载网站中的图片,但是发现下载的图片不能打开,在网上搜索类似问题,没有找到解决的办法,无奈只得查看HttpClient的源代码,自己解决这个问题了。在HttpMethodBase中发现如下代码:java代码publicStringgetResponseBodyAsString(......
  • HttpClient下载图片
    评:需要的包:commons-httpclient.jar,commons-loggin.jar,commons-codec-1.3.jarpackagecom.db;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Date;importorg.a......
  • 关于HTTP Keep-Alive的大揭密
    keep-Alive首部只是请求将连接保持在活跃状态。发出keep-alive请求之后,客户端和服务器并不一定会同意进行keep-alive会话。它们可以在任意时刻关闭空闲的keep-alive连接,并可随意限制keep-alive连接所处理事务的数量。可以用Keep-Alive通用首部中指定的、由逗号分隔的选项来调节keep......
  • 安装nginx-http-concat和nginx平滑升級
    评:Nginx_concat_module是淘宝开发的基于Nginx减少HTTP请求数量的扩展模块,主要是用于合并减少前端用户Request的HTTP请求的数量下载后把它放在/usr/local/src/文件夹中,到时候nginx需要指定该目录这个需要重新编译nginx,所以顺便把nginx升级了下。下载最新版本Linux代......