HTTP请求报文和响应报文

一、HTTP请求报文

HTTP请求报文由3部分组成(请求行+请求头+请求体):

HTTP请求报文和响应报文
请求行:
①是请求方法,如GET和POST。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。

请求头:
④是HTTP的报文头,包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。与缓存相关的规则信息,均包含在header中

请求体:
⑤是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。报文体可以传递请求参数,同样请求URL也可以通过类似于“/chapter15/user.html?param1=value1&param2=value2”的方式传递参数。

HTTP请求报文头属性说明:

Accept:
请求报文告诉服务端,客户端接受什么类型的响应。如Accept:text/plain报文头告诉服务端,客户端能够接受的响应类型仅为纯文本数据。

Referer:
表示这个请求是从哪个URL过来的。

Accept-Language:
告知服务器客户端能够处理的语言集(指中文或英文等),以及语言集的相对优先级。

User-Agent:
用户代理,告知服务器客户端浏览器的类型、版本等信息,以便服务器更好的提供服务。

Content-Type:
表明发送数据流的类型,服务器根据编码类型使用特定的解析方式获取数据。

Host:
用于区分同一IP上的不同虚拟主机。

Content-Length:
标识HTTP消息实体的传输长度,单位字节。

Connection:
用于管理持久连接,HTTP/1.1 版本的默认连接都是持久连接,想明确断开连接时,则指定Connection 的值为 Close。

Cache-Control:
缓存控制,比如是否需要缓存或要缓存多久等。

Cookie:
客户端Cookie通过这个报文头属性传给服务端。服务端如何确定客户端的多个请求隶属哪个Session?通过请求报文头Cookie属性的jsessionid的值来确定。(也可以通过重写URL将ID附带在URL的后面)。


二、HTTP响应报文

HTTP的响应报文也由三部分组成(响应行+响应头+响应体):

HTTP请求报文和响应报文
响应行:
①报文协议及版本;
②状态码及状态描述;

响应头:
③响应报文头,也是由多个属性组成;

响应体:
④响应报文体,真正需要的数据。

常见的状态码:
HTTP请求报文和响应报文
301:永久重定向;
302:临时重定向;
401:发送的请求要有http的验证信息;
402:请求报文中有语法错误;
403:无权访问;
404:没有对应的资源;
500:服务器执行请求时发生错误;
503:服务器停机或正在维护。

HTTP响应报文头一些属性说明
Server:
告知客户端当前服务器上安装的 HTTP 服务器应用程序的信息。

Transfer-Encoding:
规定了传输报文主体时采用的编码方式。HTTP/1.1 的传输编码方式仅对分块传输编码有效。

Date:
创建 HTTP 报文的日期和时间。