Web开发必备HTTP基础知识

来源:互联网 发布:淘宝网店开店步骤2016 编辑:程序博客网 时间:2024/05/16 19:35

HTTP基础知识

HTTP允许各种主机和客户端之间的通信,并支持网络配置的混合。

为了实现这一点,它对于特定系统的假设很少,并且不会在不同的消息交换之间保持状态。

这使得HTTP成为无状态协议。通信通常通过TCP / IP进行,但可以使用任何可靠的传输。TCP / IP的默认端口为80,但也可以使用其他端口。

通过请求/响应对发生主机和客户端之间的通信。客户端发起一个HTTP请求消息,它通过HTTP响应消息进行服务。我们将在下一节中看这个基本的消息对。

当前版本的协议是HTTP / 1.1,它为之前的1.0版本增加了一些额外的功能。在我看来,最重要的是包括持久连接,分块传输编码和细粒度缓存头。本文将简要介绍这些功能; 第二部分将提供深入的报道。

网址

Web通信的核心是通过统一资源定位器(URL)发送的请求消息。我相信你已经熟悉了URL,但为了完整起见,我将其包含在这里。URL具有由以下组件组成的简单结构:

协议通常是http,但也可以https用于安全通信。默认端口是80,但可以明确设置,如上图所示。资源路径是服务器上资源的本地路径。

动词

还有Web调试代理,如Windows上的Fiddler和OSX的Charles Proxy。

URL显示了我们想要通信的特定主机的身份,但是应该通过HTTP动词指定在主机上执行的操作。当然,客户端希望主机执行几种操作。HTTP已经形式化了一些捕获普遍适用于各种应用程序的要点。

这些请求动词是:

GET:获取现有资源。该URL包含服务器查找和返回资源所需的所有必要信息。
POST:创建一个新的资源。POST请求通常携带指定新资源的数据的有效载荷。
PUT:更新现有资源。有效载荷可能包含资源的更新数据。
删除:删除现有资源。
上述四个动词是最受欢迎的,大多数工具和框架明确地暴露了这些请求动词。PUT并且DELETE有时被认为是POST动词的特殊版本,并且它们可以被打包成POST具有包含确切动作的有效载荷的请求:创建,更新或删除。

HTTP还支持一些较小使用的动词:

HEAD:这与GET类似,但没有消息体。它用于检索特定资源的服务器头,通常通过时间戳检查资源是否已更改。
TRACE:用于检索请求从服务器往返的跳数。每个中间代理或网关将其IP或DNS名称注入Via到头域中。这可以用于诊断目的。
选项:用于检索服务器功能。在客户端,可以根据服务器支持的方式修改请求。

状态码

使用URL和动词,客户端可以向服务器发起请求。作为回报,服务器响应状态码和消息有效载荷。状态代码很重要,并告诉客户端如何解释服务器响应。HTTP规范为特定类型的响应定义了一些数字范围:

1xx:信息消息

所有HTTP / 1.1客户端都需要接受Transfer-Encoding标头。

这类代码是在HTTP / 1.1中引入的,完全是临时的。服务器可以发送Expect: 100-continue消息,告诉客户端继续发送请求的剩余部分,或者如果已经发送请求,则忽略该消息。HTTP / 1.0客户端应该忽略此头。

2xx:成功

这告诉客户端请求已被成功处理。最常见的代码是200 OK。对于GET请求,服务器在消息正文中发送资源。还有其他较少使用的代码:

202已接受:请求被接受,但可能不包括响应中的资源。这对服务器端的异步处理非常有用。服务器可以选择发送监控信息。
204无内容:回复中没有留言体。
205重置内容:指示客户端重置其文档视图。
206部分内容:表示响应只包含部分内容。附加标题表示确切的范围和内容过期信息。

3xx:重定向

404表示资源无效,服务器上不存在。

这需要客户端采取额外的措施。最常见的用例是跳转到不同的URL以获取资源。

301永久移动:资源现在位于新的URL。
303请参阅其他:资源暂时位于新的URL。该Location响应报头包含临时URL。
304未修改:服务器已确定资源未更改,客户端应使用其缓存副本。这取决于客户端发送ETag(Enttity Tag)信息是内容的哈希的事实。服务器将其与其自己计算的进行比较ETag以检查修改。

4xx:客户端错误

当服务器认为客户端出现故障时,会使用这些代码,无论是通过请求无效资源还是发出不良请求。这个类中最流行的代码是404 Not Found,我认为每个人都会识别。404表示资源无效,服务器上不存在。该课程中的其他代码包括:

400错误请求:请求格式错误。
401未经授权:请求需要身份验证。客户端可以使用Authorization头重复请求。如果客户端已经包含了Authorization标题,那么凭据是错误的。
403禁止:服务器已拒绝对资源的访问。
405方法不允许:在请求行中使用无效的HTTP动词,或服务器不支持该动词。
409冲突:服务器无法完成请求,因为客户端正在尝试修改比客户端时间戳更新的资源。在协作编辑资源时,冲突主要出现在PUT请求中。

5xx:服务器错误

此类代码用于在处理请求时指示服务器故障。最常用的错误代码是500内部服务器错误。这个班的其他人是:

501未实现:服务器不支持所请求的功能。
503服务不可用:如果服务器上的内部系统发生故障或服务器超载,可能会发生这种情况。通常,服务器甚至不会响应,请求将超时。
请求和响应消息格式
到目前为止,我们已经看到URL,动词和状态码构成了HTTP请求/响应对的基本部分。

原创粉丝点击