web及网络基础(11)

105 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天

HTTP报文

用于HTTP协议交互的信息 被称为 HTTP报文。 请求端(客户端)的HTTP报文 为 请求报文。 相应端(服务器端)的HTTP报文 响应报文。

HTTP请求报文主要包括请求行、请求头部以及请求的数据(实体)三部分

请求行(HTTP请求报文的第一行)

请求行由方法字段、URL字段和HTTP协议版本字段。其中,方法字段严格区分大小写,当前HTTP协议中的方法都是大写,方法字段如下介绍如下:

方法字段

①GET:请求获取Request-URI(URI:通用资源标识符,URL是其子集,URI注重的是标识,而URL强调的是位置,可以将URL看成原始的URI),所标识的资源

②POST:在Request-URI所标识的资源后附加新的数据;支持HTML表单提交,表单中有用户添入的数据,这些数据会发送到服务器端,由服务器存储至某位置(例如发送处理程序)

③HEAD:请求Request-URI所标识的资源响应消息报头,HEAD方法可以在响应时不返回消息体。

④PUT:与GET相反,请求服务器存储一个资源,并用Request-URI做为其标识;例如发布系统。

⑤DELETE:请求删除URL指向的资源

⑥OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项

⑦TRACE:跟踪请求要经过的防火墙、代理或网关等,主要用于测试或诊断

⑧CONNECT保留将来使用

  • URL

一个完整的包括类型、主机名和可选路径名的统一资源引用名,如:www.example.com/path/to/fil…

请求头部:位于请求行的下面

请求报文中常见的标头有:

Connetion标头(连接管理)、Host标头(指定请求资源的主机)、Range标头(请求实体的字节范围)、User-Agent标头(包含发出请求的用户信息)、Accept标头(首选的媒体类型)、Accept-Language(首选的自然语言)

HTTP首部:

通用首部:请求和响应都可以使用的;

Connection:定义C/S之间关于请求/响应的有关选项

对于http/1.0, Connection: keep-alive

Via: 显示了报文经过的中间节点

Cache-Control: 缓存指示

实体首部:用于指定实体属性

实体主体用于POST方法中。用户向Web服务器提交表单数据的时候,需要使用POST方法,此时主体中包含用户添写在表单的各个属性字段的值,当Web服务器收到POST方法的HTTP请求报文后,可以从实体中取出需要的属性字段的值。

也就是说,当用户通过Web浏览器向Web服务器发送请求时,Web浏览器会根据用户的具体请求来选择不同的HTTP请求方法,再将相应的URL和HTTP协议版本及相关的标头填入头部行中,若是POST方法,还会将相关的表单数据填入实体主体中,产生一个HTTP请求报文,然后将这个报文发送给Web服务器。

 

Location: 资源的新位置

Allow: 允许对此资源使用的请求方法

1、内容首部:

Content-Encoding:支持的编码

Content-Language:支持的自然语言

Content-Length:文本长度

Content-Location:资源所在位置

Content-Range:在整个资源中此实体表示的字节范围

Content-Type:主体的对象类型

2、缓存首部:

ETag: 实体标签

Expires: 过期期限

Last-Modified: 上一次的修改时间

请求首部:

Host: 请求的主机名和端口号,虚拟主机环境下用于不同的虚拟主机

Referer:指明了请求当前资源的原始资源的URL

User-Agent: 用户代理,使用什么工具发出的请求

1、Accept首部:用户标明客户自己更倾向于支持的能力

Accept: 指明服务器能发送的媒体类型

Accept-Charset: 支持使用的字符集

Accept-Encoding: 支持使用的编码方式

Accept-Language: 支持使用语言

2、条件请求首部:

Expect: 告诉服务器能够发送来哪些媒体类型

If-Modified-Since: 是否在指定时间以来修改过此资源

If-None-Match:如果提供的实体标记与当前文档的实体标记不符,就获取此文档

跟安全相关的请求首部:

Authorization: 客户端提交给服务端的认证数据,如帐号和密码

Cookie: 客户端发送给服务器端身份标识