HTTP协议基本格式

这篇具有很好参考价值的文章主要介绍了HTTP协议基本格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。

Chrome抓包

注:Chrome浏览器或Chrome内核浏览器可用(如Edge, Firefox)

  1. 在目标网页打开开发者工具:
    HTTP协议基本格式
  2. 点击网络(Network):
    HTTP协议基本格式
    此时就可以看到目标网页的所有请求。
  3. 查看请求和响应:
    HTTP协议基本格式

Fiddler代理抓包

浏览器自带抓包工具功能有限,实际开发过程中往往会选择一些代理工具进行抓包。
常见的抓包工具主要有:Charles、Wireshark、Tcpdump、Fiddler等。对于初学者来说,使用简单且免费的Fiddler(Fiddler只适用于Windows系统)即可。

FIddler下载地址
Fiddler默认是不支持抓取HTTPS的,因此需要先进行设置: 先点击Tools-options-HTTPS进行设置:

HTTP协议基本格式
HTTP协议基本格式
接下来Fiddler就可以进行抓包了。

例如抓取哔哩哔哩的HTML页面请求:
首先打开bilibili网站,要抓的包就是:
HTTP协议基本格式
这么多包如何确定我们要找的是哪一个?

  1. 首先看URL,也就是目标域名。
  2. 不同类型的包颜色不同,这里抓的是HTML页面的包,因此找蓝色的。
  3. 看body大小,请求的HTML页面,body大小一般很大。

找到目标后双击即可看到详情:
HTTP协议基本格式

HTTP协议格式

HTTP是一种请求——响应式协议,由客户端(即浏览器)发起请求,服务器返回响应。可以通过抓包来分析HTTP协议的请求和响应细节以及特点。
抓包工具可以使用Chrome开发者工具或者Fiddler。

HTTP请求

HTTP协议基本格式
对于Get请求,一般没有body,但是Post请求一般有body,在空行后的部分都是body内容。
例如一个Post请求:
HTTP协议基本格式
Get请求中虽然可以放body,但一般不建议,某些服务器或代理会忽略或删除get方法中的body,某些客户端不支持get请求添加body等。因此要携带body最好是使用post请求。

首行

首行包括方法、URL以及版本号。

URL

URL(Uniform Resource Locator),即统一资源定位符,俗称“网址”。互联网上的每一个文件都有唯一的一个URL。
一个URL通常包含:协议、主机、端口、路径、查询参数、锚点。
HTTP协议基本格式

方法

HTTP协议常用方法有:
HTTP协议基本格式

Get方法

GET 是最常用的 HTTP 方法,用来获取服务器的某个资源。抓取的包大多数都是Get请求。

以百度首页为例:
HTTP协议基本格式
特点

  • URL中的查询参数可以为空,也可以不为空
  • Header中的若干属性以键值对的形式存在
  • Get请求中的body一般为空
Post方法

HTTP协议基本格式
特点

  • URL中的查询参数一般为空
  • Header中的若干属性以键值对的形式存在
  • body 部分一般不为空
  • body 内的数据格式通过 header 中的 Content-Type 指定
  • body 的长度由header 中的 Content-Length 指定
Get与Post的区别

get与post没有本质区别,get和post一般可以互换,但二者有些不同:

  • get一般用于获取,post一般用于提交
  • get方法通过查询参数获取数据,body一般为空
  • post方法通过body提交数据,查询参数一般为空
  • get一般是幂等的,post一般不是幂等的(每次相同请求返回同一个响应就视为幂等)
  • get可以缓存(因为幂等性),post不可以缓存

请求报头中的属性

  • Host:表示服务器主机的地址和端口

明明URL中已经包含了服务器的地址和端口,为什么还要在设置一个Host呢?
其实一个服务器是可以托管多个网站的,这些网站共享同一个IP地址和端口号,但是他们有不同的域名,这时Host的作用就体现出来了。Host属性往往使用域名作为字段,这样便于服务器识别。
例如网站A:www.A.com和网站B:www.B.com由同一个服务器托管,那么他们的URL中的ip地址和端口号就相同。无论是A网站还是B网站发起请求,通过DNS协议进行域名解析后会得到同一个ip地址和端口号,此时就需要Host属性来识别是A网站的请求还是B网站的请求。

  • User-Agent:表示浏览器或操作系统的一些信息,包括类型、版本、语言等。
    User-Agent的作用是让服务器能够识别客户端的类型和能力,从而返回合适的响应。
    例如4399小游戏,需要Flash插件才能正常运行,但是目前浏览器禁止自带Flash功能,因此打开一个小游戏后会显示:
    HTTP协议基本格式
    同时User-Agent也用来表示客户端是手机端还是网页端,这也解释了为什么同一个网站,用手机打开和用电脑打开时,页面布局什么的不尽相同。

  • Content-Length:表示body的数据长度

  • Content-Type:表示body中的数据格式
    Content-Type有多种类型,一般分为如下几类:

    1. text/plain,表示纯文本类型。它会把表单中的数据直接放到请求体中。这种格式适合于传输简单的文本数据。

    2. 以application开头的,表示应用类型。如:application/json表示JSON数据格式,application/x-www-form-urlencoded表示表单数据格式。

    3. 以mutipart开头的,表示多部分类型。如:multipart/form-data表示表单数据格式。

      application/x-www-form-urlencoded是默认的表单数据格式,适用于大多数场景,但是不能上传文件和二进制数据
      multipart/form-data是一种多部分数据格式,它把表单中的数据分为多个部分,每个部分用特定的符号分隔开,每个部分都可以有自己的Content-Type和编码方式。可以上传文件和二进制数据
      multipart/form-data会占用更多的资源和带宽,因此只有上传文件或二进制数据时,才使用multipart/form-data,其他情况都使用application/x-www-form-urlencoded。

  • Referer:表示页面是从哪一个页面跳转过来的。
    例如从百度跳转到B站,抓到的包就是:
    HTTP协议基本格式
    这里的refer即表示了B站是从百度跳转过来的。
    当我们在搜索引擎上搜索时,总会出现广告,这些都是广告商投递的,广告商通过搜索提高曝光度:
    HTTP协议基本格式
    广告商通过用户点击链接来确认成交量。但是广告商不会只在一个搜索引擎上投递广告,因此refer就可以帮助确定来源。

Cookie和Session

HTTP协议是无状态协议。无状态指的是HTTP服务器没有记忆功能,每次客户端向服务器发送请求,服务器都无法确定这个请求和之前的请求是否有关,例如上某宝网购,虽然一开始登录成功,当我选定某个商品后,准备进行后续操作时,服务器并不能确定这个请求是否关联到之前的请求。之所以这样设计是为了简化服务器的处理逻辑,节省网络传输的成本,但是这样并不便于用户操作,因此引入Cookie和Session来弥补这部分的缺陷。

  • Cookie
    Cookie是一种在客户端存储用户信息的机制,客户端发送请求后,服务器除了返回响应外,还会返回一个Cookie给客户端,Cookie中存储了当前客户端的状态信息,例如登录状态等。当客户端下次发送请求时,会一并把Cookie发过去,服务器就可以根据Cookie来确定客户端的状态。
  • Session
    Cookie中往往会包含一些敏感信息,这些信息在传输过程中是透明的,并不安全,容易被盗用篡改。Session是一种更为安全的方法。
    Session是一种在服务器存储用户信息的机制,客户端发送请求后,服务器除了返回响应外,同时会生成Cookie信息和一个Session ID,服务器把这个Session ID一并返回客户端,后续客户端发起请求时,会一并把Session ID发过来,服务器通过这个Session ID就可以找到对应的Cookie信息,从而确定客户端的状态。

Cookie与Session的区别

  • 存储位置不同:Cookie存储在客户端,Session存储在服务器。
  • 安全性不同:Cookie不安全,Session相对安全。
  • 性能不同:Cookie占用客户端资源,影响浏览体验;Session占用服务器资源,影响性能。
  • 有效期不同:Cookie可以设置有效期,过期自动删除;Session没有设置过期时间时,浏览器关闭即删除。

HTTP响应

HTTP状态码

  • 常见状态码有:
状态码 含义
200 OK(正常)
404 Not Found(没有找到资源)
403 Forbidden(访问被拒绝)
405 Method Not Allowed(方法不支持)
500 Internal Server Error(服务器内部错误)
502 Bad Gateway(错误网关)
504 Gateway Timeout(响应超时)
302 Move temporarily(临时重定向)
301 Moved Permanently(永久重定向)
  • 状态码小结:
    HTTP协议基本格式

HTTP响应报头和正文

HTTP响应报头

响应报头的常见属性有:

  1. text/html,这种格式把响应数据转化为HTML格式文档,这种格式适用于返回网页数据,但是需要额外设置编码格式。
    例如:Content-Type=text/html; charset=utf8
  2. text/xml,把响应数据转换为xml格式文档,这种格式适用于返回结构化数据,同样需要设置编码格式或者在xml文档中声明编码格式。
  3. 以image开头的,表示图像类型,将响应数据转化为图片显示。

除此之外还有很多响应属性例如:text/css、text/javascript等。

HTTP响应正文

响应正文的具体格式取决于Content-Type属性。
HTTP协议基本格式文章来源地址https://www.toymoban.com/news/detail-476020.html

到了这里,关于HTTP协议基本格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP(超文本传输协议)学习

    关于HTTP补学   一、HTTP能干什么 通过下图能够直观的看出:“交换数据 ” 二、HTTP请求例子 一个 HTTP 方法,通常是由一个动词,像 GET、POST 等,或者一个名词,像 OPTIONS、HEAD 等,来定义客户端执行的动作。典型场景有:客户端意图抓取某个资源(使用 GET );发送 HT

    2024年02月14日
    浏览(40)
  • 【网络编程】一文详解http协议(超文本传输协议)

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。    目录 一、http协议 1、http协议的介绍 2、URL的组成 3、urlencode和urldecode 二、http的请求方法、状态码及状态码描述、常见的响

    2024年02月06日
    浏览(71)
  • FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的协议

    FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的协议。它允许用户通过网络连接到远程计算机,并在本地计算机和远程计算机之间进行文件传输。 FTP分为两个主要角色:客户端和服务器。客户端是发起文件传输请求的计算机,而服务器是存放文件和响

    2024年02月05日
    浏览(53)
  • 【Java网络编程】HTTP超文本传输协议

        HTTP 全称为 Hyper Text Transfer Protocol 超文本传输协议,它是基于 TCP 传输协议构建的应用层协议,作为支撑万维网 www 的核心协议,为了保证其效率及处理大量事务的能力,因此在设计时, HTTP 被制定成为一种无状态协议,也就是说: HTTP 本身不会对发送过的请求和相应的通

    2024年04月09日
    浏览(62)
  • 直播程式源码平台细讲HTTP协议:超文本传输

    HTTP协议的简介   HTTP协议是一种数据通信协议,是浏览器与服务器之间的协议,HTTP协议的中文全称为超文本传输协议,HTTP协议在直播程式源码平台中,承载着数据传输的重要任务,用户可以通过HTTP协议获取直播程式源码平台中提供给用户的信息与视频资源,并通过网络流传

    2024年02月10日
    浏览(45)
  • HTTP协议基本格式

    HTTP即HyperText Transfer Protocol(超文本传输协议),HTTP基于TCP/IP协议传输数据。 注:Chrome浏览器或Chrome内核浏览器可用(如Edge, Firefox) 在目标网页打开开发者工具: 点击网络(Network): 此时就可以看到目标网页的所有请求。 查看请求和响应: 浏览器自带抓包工具功能有限,

    2024年02月08日
    浏览(37)
  • HTTP 协议的基本格式

    什么是HTTP?HTTP是应用层的一个重要协议.它定义了浏览器怎样向服务器请求文件,以及服务器怎样把文件传送给浏览器. 我们打开浏览器,手动输入一个网址:baidu.com.那么此时浏览器就会给百度的服务器发送请求.百度服务器在返回一个html的响应. 那么我们如何学习HTTP协议呢?通过它

    2024年02月06日
    浏览(36)
  • HTTP协议的基本格式

    目录 一、HTTP请求  1.1 首行 1.1.1 URL 1.1.2 方法 1.2 请求报头(header) 1.2.1 host ​编辑 1.2.2 Content-Length和Content-Type 1.2.3 User-Agent 1.2.4 Referer 1.2.5 Cookie 1.3 请求正文(body) 1.3.1  application/x-www-form-urlencoded  1.3.2 application/json 1.3.3  multipart/form-data 二、HTTP响应 2.1 首行 2.1.1 状态码 H

    2024年02月17日
    浏览(55)
  • HTTP 协议的基本格式和 fiddler 的用法

    目录 一.  HTTP 协议 1. HTTP协议是什么 2. HTTP协议的基本格式  HTTP请求 首行                  GET和POST方法:                 其他方法                  经典面试题:                 URL Header(请求报头)部分 空行  ​HTTP响应          状态

    2024年02月12日
    浏览(36)
  • https是什么意思?(安全超文本传输协议)

    在逛论坛的时候发现有网友说到IE打不开HTTPS的情况,在论坛上的留言发现有部分网友说到还不知道什么是HTTPS?那么 HTTPS是什么意思? 所以yii666就在这里跟大家详细讲解HTTP的具体含义。内容如下: HTTP(hypertext transport protocol) HTTP相信大家有见到过,HTTP它所代表的就是超文

    2024年02月05日
    浏览(100)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包