HTTP请求/响应报文结构

时间:2023-12-04 23:47:32

HTTP协议版本有两种:HTTP1.0和HTTP1.1

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

http请求过程:

1)请求超链接——》客户端发送请求到服务器,请求包内容:协议版本号,求情地址,请求方式,请求头和请求参数

2)服务器接受请求——》开始处理请求——》将响应包返回给客户端,响应包内容:协议版本号,状态码,响应数据

3)前端收到响应包——》根据响应数据开始做相应处理

常见的请求头字段含义:

请求行:标明了请求方法,请求URL,HTTP协议及版本

Accept:浏览器可接受的MIME类型,也就是代表着浏览器希望接收什么样的文件

Accept-Charset:浏览器可接受的字符集

Accept-Encoding:浏览器能够进行解码的数据编码方式

Accept-Language:浏览器所接受的语言

Authorization:授权信息

Content-Length:表示请求消息正文的长度

Host:客户机通过这个头告诉服务器,想访问的主机名

If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间

Referer:表明客户机是从哪里来的

User-Agent:User-Agent头域的内容包含发出请求的用户信息,浏览器类型

Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。

Connection:处理完这次请求后是否断开连接还是继续保持连接。

UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。

HTTP请求/响应报文结构

响应头

常见的响应头字段含义:

响应行:报文协议及版本,状态码以及状态描述

Allow:服务器支持哪些请求方法(如GET、POST等)。

Content-Encoding:文档的编码(Encode)方法。

Content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。

Content- Type:表示后面的文档属于什么MIME类型

Expires:告诉浏览器把回送的资源缓存多长时间,-1或0则是不缓存

Server:服务器通过这个头告诉浏览器服务器的类型

WWW-Authenticate:客户应该在Authorization头中提供什么类型的授权信息

Get和Post的区别:

GET请求的数据会附在URL之后,即数据直接显示在url中,以?分割URL和传输数据,参数之间以&相连

如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5 %A5%BD。

如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

而POST方法则会把数据放到请求数据字段中以&分隔各个字段,请求行不包含数据参数,地址栏也不会额外附带参数。

另外GET方法是没有报文体的

状态码:

1xx:表示请求已接收,继续处理。比如100表示服务器正在处理客户请求

2xx:表示请求已被成功接收,理解,接受。 比如200表示请求成功

3xx:表示客户端被重定向到其他资源。  比如301表示本网页永久性转移到另一个地址;302表示重定向,浏览器自动跳转新连接;304表示上次文档已经保存,还可以继续使用

4xx:请求有语法错误或请求无法实现   比如400表示请求有语法错误浏览器不能解析;403表示拒绝提供服务;404表示请求资源不存在

5xx:服务器执行请求时遇到错误    比如500服务器错误;503服务器当前不能处理,请稍后再试