HTTP协议的基本格式

这篇具有很好参考价值的文章主要介绍了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 状态码


HTTP协议是一个应用层的协议。主要用于浏览器和web服务器之间的交互。

一、HTTP请求

下面就是一个HTTP请求的抓包结果。它包含了三个部分。

1.首行。也叫请求行,包括方法、url、版本。

2.请求报头(header)。请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分。

3.空行。表示请求报头的结束。

4.请求正文(body):空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有 一个Content-Length属性来标识Body的长度。

http格式,http,网络协议,网络

 1.1 首行

http格式,http,网络协议,网络

在上图,就是一个HTTP请求的首行。 首行包含三个部分,三个部分之间使用空格来区分。

1.1.1 URL

URL俗称网址,是一个唯一的资源定位符。表示互联网上的唯一的资源位置。描述了一个互联网上的具体地址。

http格式,http,网络协议,网络

这个就是一个标准的URL的基本格式。接下来我来一一介绍其组成部分。

1.http :协议方案名。表明这个网站所使用的协议名。在示例中使用的应用层协议是http。

2.user:pass :为登录信息(认证)。但是现在已经不用了。

3.www.example.jp:服务器地址。可以是一个ip地址,也可以是一个ip。

4.80:服务器端口号。端口描述的是哪一个程序。

5.dir/index.htm:带层次的文件路径。可以通过这个找到程序管辖下的哪个文件。

6.uid=1:查询字符串(query string)。获取资源时候带的参数,以 ?开头,以键值对的方式组织。键值对之间使用 & 分割。键和值之间使用 = 分割。

7.ch1:片段标识符。

注意:1.对于http来说,默认端口号是80,对于https来说,默认端口号是443。

           2. / 也是路径,这个并没有省略,只是有点短,代表的是HTTP服务器的根目录。

1.1.2 方法

在我们上面的抓包结果中,首行里我们可以看见一个GET单词。其实这个就是一个方法,方法就描述了这次请求的语义(想干什么)。

http格式,http,网络协议,网络

上图就是HTTP协议中的方法。虽然有如此多的方法,但是GET和POST方法是最常见的方法。其他方法非常少见。 

1. GET请求

在浏览器的地址栏里直接输入URL、html里的link,script,img,a等标签、通过js来构造GET。这些都是属于产生GET请求的方式。GET请求使我们最常见的一种请求。

接着我们来看,第一张是GET请求的图片,第二张是POST请求的图片,你能看出来他们的结构有什么不同吗? 

http格式,http,网络协议,网络

http格式,http,网络协议,网络 通过对比发现,POST请求的空行后面还有一个部分,这个部分叫做body。而GET这里则是两行空行,没有body。因此我们说,POST请求一般有body,GET请求一般没有body。  

2.POST请求

POST请求一般是在登录网站、上传文件的时候产生的请求。

http格式,http,网络协议,网络

 上图就是一个POST请求。我们可以看到POST请求由四部分组成。分别为:首行、请求报头(Header)、空行、请求正文(body)。

注意:1.GET也可以给服务器传递一些信息,GET传递的信息一般在query String里。而POST传递信息则是通过body。(不代表GET没有body,POST没有query string)。

           2.GET请求一般是用于服务器获取数据,POST一般是用于给服务器提交数据。

           3.GET通常会被设计成幂等的,POST不要求幂等(习惯上)。

           4.GET可以被缓存,POST则一般不能被缓存。

1.2 请求报头(header)

下图就是一个header,它是一堆键值对组成的。每一行是一个键值对。键和值之间使用 : 分割。并且这些键值对都是HTTP协议提前定义好的,每个都有各自特定的含义的。 

http格式,http,网络协议,网络

下面我就挑几个比较关键的来说明一下。

1.2.1 host

下面就是一个host,这里的host是一个域名,但它可以是一个ip地址也可以是一个ip地址+端口号。它大概的描述了服务器所在的地址和端口。host这里的地址和端口是用来描述你最终要访问的目标的(可能和url不一样)。

http格式,http,网络协议,网络

1.2.2 Content-Length和Content-Type

下图就是Content-Length和Content-Type。其中Content-Length表示请求中body中的数据长度。Content-Type是用来描述请求中body中的数据格式。

http格式,http,网络协议,网络

http格式,http,网络协议,网络

上图中Content-Length为117,则表示body的长度为117字节。Content-Type描述了body是用json来进行组织的,字符集为UTF-8。

 注意:1.如果是GET请求,没有body,则请求中没有这两个字段。但是如果是POST请求,有     body,则有这两个字段。

            2.Content-Type的取值非常多,有text/html、text/css、image/png等等。

1.2.3 User-Agent

下图是一个User-Agent ,它主要就是描述了当前操作系统和浏览器的版本。http格式,http,网络协议,网络

User-Agent原来主要是来区分浏览器版本的。因为当时的浏览器有的只支持文本,有的支持不图片,有的支持视频,有的全部都支持。因此开发者就在做网页的时候,就要考虑是否要在该浏览器上带上视频、图片等等。因此就用User-Agent来区分浏览器的版本。

而现在我们主要使用User-Agent来区分设备是PC端还是移动端。

1.2.4 Referer

Referer是描述当前页面的“来源”。下图就是一个Referer: 

http格式,http,网络协议,网络

如果直接通过地址栏输入地址,或者直接点击收藏夹这种操作,一般是没有Referer的。只有从一个页面跳转到这个页面,这种有“上家”的操作,才会有Referer。

1.2.5 Cookie

Cookie本质上是浏览器给网页提供的本地存储数据的机制。网页默认是不被允许访问计算机的硬盘的,但是浏览器又需要在本地存储一些东西。因此就出现了Cookie,Cookie就相当于是浏览器对于网页访问硬盘做出了明确的限制。下图就是一个Cookie:

http格式,http,网络协议,网络

 注意:1.Cookie是通过键值对的方式来存储数据的。但是其内容不止是键值对,同时还有一个过期时间,它描述了一个Cookie可以保存多长时间。

            2.Cookie是从哪来的:Cookie中的数据是来自于服务器的。服务器会通过HTTP响应的报头部分(Set-Cookie)把服务器要返回的字段放入Cookie中。服务器来决定浏览器的Cookie来存储什么。

            3.Cookie是在哪存的:存在于硬盘的。Cookie在存储的时候是按照 浏览器+域名维度来细分的。因此不同的浏览器又不同的Cookie,同一个浏览器不同的域名,也对应不同的Cookie。

            4.Cookie要到哪里去:Cookie最终会回到服务器去。客户端会通过Cookie来保存当前用户使用的中间状态。当客户端访问浏览器的时候,就会自动的把Cookie的内容带入到请求中。服务器就可以知道现在的客户端是什么样子。

1.3 请求正文(body)

请求正文的内容格式和Content-Type息息相关。下面我罗列了几个常见的情况。

1.3.1  application/x-www-form-urlencoded

使用Fiddler抓取学习通看视频请求

http格式,http,网络协议,网络

http格式,http,网络协议,网络

这个正文就用的是x-www-form-urlencoded格式写的。

 1.3.2 application/json

抓取登录时刻的请求。

http格式,http,网络协议,网络

 http格式,http,网络协议,网络

此正文就是用json格式写的。

1.3.3  multipart/form-data

抓取网站的上传简历请求。

http格式,http,网络协议,网络

 http格式,http,网络协议,网络

次正文就是用form表单格式写的。

二、HTTP响应

下图是一个HTTP响应报文,其是由四个部分组成。 

http格式,http,网络协议,网络

第一部分是首行,第二部分是header,第三部分是空行,第四部分是body。

2.1 首行

下面是一个首行:

http格式,http,网络协议,网络

 其中HTTP/1.1 为版本号。200 为状态码,OK为状态码描述。

2.1.1 状态码

HTTP状态码,它描述了这次相应的结果(成功/失败以及原因是什么)。 此图就是所有的状态码合集,在此篇文章中我们只挑几个比较重要和常见的进行认识。 http格式,http,网络协议,网络

200:OK,表示响应成功了。

404:NOT FOUND,表示访问的资源不存在,在服务器上没有找到。

403:Forbidden,表示访问被拒绝(没有访问权限)。

302:Move temporarity,表示临时重定向,方便进行网站的迁移。

500:服务器内部错误(服务器代码抛异常了)。

504:Gateway Timeout,服务器响应时间超时。

HTTP响应的报头、空行和正文部分与HTTP请求的基本一致,这里就不再赘述。接下来给大家整理了一下HTTP协议的报文格式:

http格式,http,网络协议,网络

 文章来源地址https://www.toymoban.com/news/detail-584096.html

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

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

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

相关文章

  • 2.5 - 网络协议 - HTTP协议工作原理,报文格式,抓包实战

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 HTTP(Hypertext Transfer Protocol)是 「超文本传输协议」 ,基于B/S架构(Browser

    2024年02月05日
    浏览(51)
  • HTTP的基本格式

    应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议. HTTP协议,就是最常用到的应用层协议. 使用浏览器,打开网站,使用手机app,加载数据,这些过程大概率都是HTTP来支持的 HTTP是一个 超文本 传输协议, 文本=字符串 超文本=除了传输字符串,还能传输图片,视频,音频等

    2024年02月08日
    浏览(34)
  • Web基本与HTTP协议

    目录 一:域名 1.域名概述 2.域名空间结构 3. 域名注册 二: 网页访问(HTTP/HTTPS) 1.网页的基本概念 2.网站 3.主页 4.域名 5.HTTP 6.URL 7.网页基本标签 (1)网页摘要信息的作用 (2)标题标签类型 三:HTML 1.HTML 概述 2.HTML 基本标签 (1)HTML 语法规则 (2)HTML 文件结构 (3)网页

    2024年02月06日
    浏览(37)
  • 【剧前爆米花--web】HTTP协议格式详解以及构造

    作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是一篇关于HTTP协议的文章,在这篇文章中我会说明HTTP协议格式以及相关的构造,希望对你有所帮助!   目录 HTTP协议 HTTP协议格式  HTTP请求 HTTP响应详情 HTTP请求的构造 通过form表单构造HTTP请求 通过ajax构造HTTP请求 HTTP (全

    2024年02月16日
    浏览(43)
  • HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几个部分组成: 请求行:包括请求方法(GET、POST等)、请求的URI和HTTP协

    2024年02月12日
    浏览(46)
  • HTTP协议详解:基本概念与工作流程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于在计算机网络上进行数据交换的通信协议。它是互联网上最常用的协议之一,被广泛应用于Web浏览器和服务器之间的通信。本文将深入探讨HTTP协议的基本概念和工作流程,帮助读者更好地理解这个重要的通信协议。

    2024年02月10日
    浏览(45)
  • PLC通过HTTP协议JSON文件格式对接MES等系统平台

            智能网关IGT-DSER集成了多种PLC、智能仪表的原厂协议,方便实现各种PLC与MES等系统平台之间的HTTP协议通讯,通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址,配置URL,即可通过POST/GET命令,将JSON文件提交给HTTP的服务端; 如果服务端有返回的JSON,网关进行

    2024年02月09日
    浏览(46)
  • Http 超文本传输协议基本概念学习摘录

    目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字段 HTTP响应状态码 即超文本传输协议(HyperText Transfer

    2024年03月20日
    浏览(53)
  • 网络协议HTTP/1、HTTP/2 及 HTTP/3详解

    目录 概述  一、发展史 HTTP/1.1  Keep-alive  动静分离  HTTP/2 二进制传输   多路复用 Header 压缩 服务端 Push  HTTP/3 QUIC  多路复用 0-RTT 纠错机制 三、小结 HTTP(Hyper Text Transformer Protocol,超文本传输协议)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到

    2024年02月02日
    浏览(58)
  • 网络协议 - HTTP 协议详解

    HTTP 协议详解,web开发必备。 URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。 URI(Uniform Resource Identifier,统一资源标识符) URL(Uniform Resource Locator,统一资源定位符) URN(Uniform Resource Name,统一资源名称) 1. 请求报文 2. 响应报文 客户端发送的 请求报文 第

    2024年02月04日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包