购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2.4 HTTP请求方法

HTTP请求方法规定了客户端操作服务器资源的方式,这有点儿像快递系统,如果要给远方的朋友送个礼物,我们可以选择顺丰、中通、邮政特快专递或者其他快递服务来完成这个工作。

1.常见的请求方法

HTTP发送请求时同样可以选择不同的请求方法,目前HTTP 1.1版本支持8种请求方法,如表1-2所示。

表1-2 HTTP请求方法

(1)GET方法

GET 方法是最常用的请求方法,通常用于请求服务器发送某个资源。当用户在浏览器地址栏中直接输入某个URL或单击网页上的一个超链接时,浏览器将采用GET方法发送请求。

GET 请求方法的特点是没有请求体。用户的请求参数将通过 URL 查询字符串进行传递。例如,在网页 https://www.ptpress.com.cn/的搜索栏中输入“爱国”,然后进行搜索,弹出页面的URL如下。

https://www.ptpress.com.cn/search?keyword=爱国&jc=

该地址中“?”后面的内容是参数信息,是由参数名和参数值组成的,中间使用“=”连接。如果有多个参数,那么参数之间使用“&”分隔。

(2)POST方法

POST 方法最初是用来向服务器输入数据的,通常用来向指定资源提交数据以处理请求,如提交表单数据、上传文件等。数据被包含在请求体中。POST 请求方法可能会导致新的资源的建立和/或已有资源的修改。

下面通过图1-7描述的某次用户登录操作来进一步了解POST请求过程。

图1-7 采用POST方法发送请求

首先通过Form表单输入用户名和密码,然后单击“提交”按钮,向服务器发送请求,输入的数据就会通过请求体的内容发送到服务器。在请求头中,Content-Type指定了请求体的内容为Form表单,同时将Form表单中的信息(un=admin&pw=123)封装在请求体中。这样服务器就可以获取该请求,并进行相应的处理,最后将处理后的结果以HTML的形式回送给浏览器。

一般来说,我们会使用GET方法来完成单纯的数据获取,而涉及提交数据方面的请求都使用POST方法来完成,因为POST方法传递的参数是隐藏在请求体中发送的,用户是看不到的,而GET方法的参数信息都会在URL栏明文显示。

(3)HEAD方法

HEAD方法与GET方法类似,但服务器在响应中只返回响应头信息,不会返回响应体内容,如图1-8所示。这就允许客户端在未获取实际资源的情况下通过对响应头信息进行检查,从而判断该请求资源的状态。也就是说,使用HEAD方法,可以在不获取资源的前提下,通过查看响应中的状态码来检查资源是否存在,或测试资源是否被修改。通常,该方法在Web应用开发中使用较少。

图1-8 采用HEAD方法发送请求

(4)PUT方法

与GET 方法从服务器读取文档相反,PUT 方法会向服务器写入文档,从客户端向服务器传送的数据将取代指定的文档的内容。有些发布系统允许用户创建Web页面,并使用PUT方法直接将其安装到服务器上。

(5)DELETE方法

DELETE方法的作用是通过URL删除指定的资源,具体请求过程为:浏览器通过DELETE方法通知服务器删除指定的资源,服务器接受请求后将文件删除,然后对客户端进行响应。但是一般情况下服务器不会执行真正的删除操作,而是为资源做一个删除标记。

(6)TRACE方法

客户端发起的请求可能要穿过防火墙、代理、网关或其他一些应用程序,每个中间节点都可能修改原始的HTTP请求。TRACE方法允许客户端在请求最终发送给服务器时,查看它的变化,具体请求过程为:TRACE请求在目标服务器端发起一个“回环”诊断,最后一站的服务器会弹回一条 TRACE 响应,并在响应主体中携带它收到的原始请求报文。这样客户端就可以查看在所有中间HTTP应用程序组成的请求/响应链上原始报文是否以及如何被毁坏或修改。

(7)OPTlONS方法

OPTlONS方法会请求Web服务器告知浏览器其所支持的请求方法。返回服务器针对特定资源所支持的HTTP请求方法,也可以使用“*”向服务器询问它所支持的可用于所有资源的HTTP请求方法。

(8)CONNECT方法

CONNECT方法是HTTP 1.1协议预留的方法,当服务器为客户端和另一台远程服务器建立一条特殊的连接隧道时,Web服务器在中间充当了代理的角色。CONNECT方法通常用于安全套接层(SSL,Secure Sockets Layer)加密服务器的连接与非加密的HTTP代理服务器的通信。

2.请求重定向

有时我们会遇到这样一种情况,输入网址访问一个网站,网页在打开的过程中URL自动改变了,虽然最终仍然可以访问网站,但是地址栏中的地址已经不是最初输入的地址了,这种情况是发生了请求重定向,具体过程为:客户端向服务器发送请求,服务器接收该请求后返回包含需要重新访问的URL的响应消息,客户端再使用收到的新的URL发送第二次请求,最终访问到目标资源。这个过程就好比我们找甲广告公司设计名片,甲公司明确说明他们不会设计,并向我们推荐乙公司,最终我们找到乙公司设计好了名片。所以我们会对外宣称是乙公司设计的名片。

在请求重定向的过程中:

(1)客户端发出了两次请求;

(2)地址栏会发生改变;

(3)客户端清楚服务器地址改变的事实。

请求重定向一般是同时使用响应头和状态码实现的。浏览器向服务器发送GET请求,服务器接收该请求后向浏览器发送301代码,同时通过响应头中的location指定下一次要跳转的地址,浏览器接收到响应后查看到状态码为301,知道需要进一步细化请求,因此会向location 所指定的地址再一次发出请求,服务器继续对该请求进行处理,最终打开所需页面。 aKEXpEJLTJ09lWy+jrtx20uKHqxWQ1BvB7RFqS+qeD4RPLuxvMBaCgYi7LriXj26

点击中间区域
呼出菜单
上一章
目录
下一章
×