HTTP协议报文及状态码

一、HTTP报文的结构

1、HTTP报文

  • HTTP通信过程包括客户端往服务器端发送请求以及服务器端给客户端返回响应两个过程。在这两个过程中就会产生请求报文和响应报文。
  • HTTP报文是用于HTTP协议交互的信息,HTTP报文本身是由多行数据构成的字符串文本。客户端的HTTP报文叫做请求报文,服务器端的HTTP报文叫做响应报文。
  • HTTP报文由报文首部和报文主体构成,中间由一个空行分隔。 报文首部是客户端或服务器端需处理的请求或响应的内容及属性, 可以传递额外的重要信息。报文首部包括请求行和请求头部,报文主体主要包含应被发送的数据。通常,不一定有报文主体。

2、HTTP报文首部的结构

由首部字段名和字段值构成的,中间用冒号“:”分割。首部字段格式: 首部字段名:字段值。

例如,在HTTP首部中以Content-Type这个字段来表示报文主体的对象类型:Content-Type:text/html。

上述的Content-Type是首部字段名,text/html是字段值,字段值可以是多个值,例如:Keep-Alive:timeout=15,max=10。

HTTP首部字段通常有4种类型:通用首部,请求首部,响应首部,实体首部。

3、HTTP请求方法

请求方法

描述

GET

请求指定的页面信息,并返回实体主体。

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

HEAD

类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。

探测网站内是否存在某个文件,经常使用这个方法扫描

OPTIONS

探测目标网站服务器开启了哪些HTTP方法

PUT

向目标服务器上传数据,例如文本文档

PATCH

是对 PUT 方法的补充,用来对已知资源进行局部更新 。

DELETE

请求服务器删除指定的页面。

TRACE

回显服务器收到的请求,主要用于测试或诊断。

CONNECT

HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

1.GET方法和POST方法的区别:

1:GET方法用于信息获取,它是安全的(安全:指非修改信息,如数据库方面的信息),而POST方法是用于修改服务器上资源的请求;

2:GET请求的数据会附在URL之后,而POST方法提交的数据则放置在HTTP报文实体的主体里,所以POST方法的安全性比GET方法要高;

3:GET方法传输的数据量一般限制在2KB,其原因在于:GET是通过URL提交数据,而URL本身对于数据没有限制,但是不同的浏览器对于URL是有限制的,比如IE浏览器对于URL的限制为2KB,而Chrome,FireFox浏览器理论上对于URL是没有限制的,它真正的限制取决于操作系统本身;POST方法对于数据大小是无限制的,真正影响到数据大小的是服务器处理程序的能力。

4、请求报文结构

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据(请求体)4个部分组成。

1.请求行

请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。比如 GET /info.html HTTP/1.1

方法字段就是HTTP使用的请求方法,比如常见的GET/POST

其中HTTP协议版本有两种:HTTP1.0/HTTP1.1 可以这样区别:

HTTP1.0对于每个连接都只能传送一个请求和响应,请求就会关闭,HTTP1.0没有Host字段;而HTTP1.1在同一个连接中可以传送多个请求和响应,多个请求可以重叠和同时进行,HTTP1.1必须有Host字段。

2.请求头部

HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现。

3.空行

它的作用是通过一个空行,告诉服务器请求头部到此为止。

4.请求数据

若方法字段是GET,则此项为空,没有数据。

若方法字段是POST,则通常来说此处放置的就是要提交的数据。

请求报文示例:

5、响应报文结构

HTTP响应报文由三部分组成:响应行、响应头、响应体。

1.响应行

响应行一般由协议版本、状态码及其描述组成 比如 HTTP/1.1 200 OK

其中协议版本HTTP/1.1或者HTTP/1.0,200就是它的状态码,OK则为它的描述。

2.响应头

响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

 3.响应体

响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

响应报文示例:

二、HTTP状态码

HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

1、状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

1xx消息——请求已被服务器接收,继续处理

2xx成功——请求已成功被服务器接收、理解、并接受

3xx重定向——需要后续操作才能完成这一请求

4xx请求错误——请求含有词法错误或者无法被执行

5xx服务器错误——服务器在处理某个正确请求时发生错误

常见状态码

100

Contiune

继续,客户端应继续其请求

200

OK

请求成功

201

Created

成功请求并创建了新资源

301

Moved Permanently

永久移动,返回信息包括新url,浏览器自动定向到新URL

302

Found

临时移动,客户端应继续使用原有URL

303

See Other

查看其它地址,使用Get,POST请求查看

403

Forbidden

服务器理解客户端的请求,但拒绝执行此请求

404

Not Found

服务器无法根据客户端的请求找到资源

500

Internal Server Error

服务器内部错误

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它定义了客户端和服务器之间进行通信的规则。HTTP协议使用请求-响应模型,客户端发送请求,服务器返回响应。 HTTP协议报文格式包括请求报文和响应报文。 1. 请求报文格式: - 请求行:包含请求方法、请求目标和HTTP协议版本。 - 请求头部:包含一系列键值对,用于传递请求的附加信息,如User-Agent、Content-Type等。 - 空行:用于分隔请求头部和请求体。 - 请求体:可选,用于传递请求的数据,如表单数据、JSON数据等。 2. 响应报文格式: - 状态行:包含HTTP协议版本、状态码和状态描述。 - 响应头部:包含一系列键值对,用于传递响应的附加信息,如Content-Type、Content-Length等。 - 空行:用于分隔响应头部和响应体。 - 响应体:可选,用于传递响应的数据,如HTML页面、JSON数据等。 HTTP协议的功能包括: 1. 建立连接:客户端与服务器之间建立TCP连接。 2. 请求方法:定义了客户端对服务器资源的操作方式,常见的有GET、POST、PUT、DELETE等。 3. 请求头部:传递请求的附加信息,如User-Agent、Cookie等。 4. 响应状态码:表示服务器对请求的处理结果,常见的有200(成功)、404(未找到)、500(服务器内部错误)等。 5. 响应头部:传递响应的附加信息,如Content-Type、Content-Length等。 6. 会话管理:通过Cookie和Session来管理用户的会话状态。 7. 缓存控制:通过Cache-Control、Expires等头部字段来控制缓存策略。 8. 安全性:通过HTTPS协议进行数据加密传输,保证通信安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值