5月阅读周·HTTP权威指南:发布系统之增强的HTTP/1.1方法篇

举报
叶一一 发表于 2025/05/20 23:41:44 2025/05/20
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不...

引言

HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。

《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。

这本书主要包括以下内容:

  • 第一部分描述了Web的基础构件与HTTP的核心技术
  • 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
  • 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
  • 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
  • 第五部分介绍了发布和传播Web内容的技巧。
  • 第六部分是一些很有用的参考附录,以及相关技术的教程。

发布系统

增强的HTTP/1.1方法

WebDAV修改了HTTP中DELETE、PUT以及OPTIONS方法的语义。GET和HEAD方法的语义保持不变。POST执行的操作总是由特定的服务器实现来定义的,而WebDAV没有对POST的语义进行任何修改。这里将讨论PUT和OPTIONS方法。

1.PUT方法

尽管PUT不是由WebDAV定义的,但这是作者把内容传送到共享站点上的唯一方法。WebDAV修改了该方法以支持锁定。请看下面的例子:

PUT /ch-publish.fm HTTP/1.1
Accept: */*
If:<http://minstar/index.htm>(<opaquelocktoken:********>)
User-Agent: DAV Client (C)
Host: minstar.inktomi.com
Connection: Keep-Alive
Cache-Control: no-cache
Content-Length: 1155

为了支持锁定,WebDAV在PUT请求中增加了If首部。在上面的事务中,If首部的语义规定,如果If首部中说明的锁定令牌与资源(在这个例子中,是ch-publish.fm)上的锁相匹配,就应当执行PUT操作。If首部还用在其他一些方法中,比如PROPPATCH、DELETE、MOVE、LOCK以及UNLOCK等。

2.OPTIONS方法

这通常是启用了WebDAV的客户端发出的第一个请求。客户端可以用OPTIONS方法验证WebDAV的能力。请看一个事务,其请求如下

OPTIONS /ch-publish.fm HTTP/1.1
Accept: */*
Host: minstar.inktomi.com

其响应如下:

HTTP/1.1200 OK
Server: Microsoft-IIS/5.0
MS-Author-Via: DAV
DASL: <DAV:sql>
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE,
MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE,
PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK

在对OPTIONS方法的响应中有一些有趣的首部。下面的介绍略微打乱了一下顺序。

· DAV首部携带了DAV遵从级别的信息。有下面两类遵从。第1类遵从要求服务器遵从RFC2518每节中的所有MUST需求。如果资源只能达到第1类遵从,就要在DAV首部中发送1。第2类遵从满足所有第1类的需求,并增加对LOCK方法的支持。除了LOCK方法之外,第2类遵从还要求支持Timeout和Lock-Token首部以及<supportedlock>和<lockdiscovery>这两个XML元素。在DAV首部中的值2表明第2类遵从。在上面的例子中,DAV首部表明这两类遵从都满足。

· Public首部列出了这个特定的服务器支持的全部方法。

· Allow首部通常包括Public首部所列方法的一个子集。它只列出了对这个特定资源(ch-publish.fm)有效的方法。

· DASL首部说明了在SEARCH方法中使用的查询语法的类型。在这个例子中,就是sql。

WebDAV中的版本管理

这可能有点儿讽刺,尽管DAV这个名字中有V,但版本管理这个特性却不是开始就有的。在多个作者的协作环境中,版本管理是至关重要的。实际上,为了完全解决更新丢失的问题,锁定和版本化都是必不可少的。和版本管理相关的一些常见特征包括保存和访问以前的文档版本的能力、管理变更历史以及与变更相关的注解以详细说明变更过程的能力。在RFC 3253中为WebDAV加入了版本管理功能。

WebDAV的未来发展

WebDAV现在已经获得了良好的支持。可以工作的客户端实现包括IE 5.x及以上版本,Windows系统的文件管理器以及微软的办公软件。在服务器端,可用的实现包括IIS5.x及以上版本,Apache的mod dav以及很多其他的系统。Windows XP和Mac OS 10.x都提供了对WebDAV的原生支持。因此,为这些操作系统编写的任何应用程序天生都具备使用WebDAV的能力。

总结

怎样创建Web页面并放到Web服务器上去呢?在Web发展的“蛮荒”时代(比如1995年),可能要在文本编辑器中手工拼凑HTML,用FTP手动把内容上传到Web服务器。这个过程很痛苦,很难与同事配合,也不是特别安全。如今的发布工具使得创建、发布以及管理Web内容方便了许多。今天,用户可以交互式地编辑Web内容,在屏幕上看到它实际呈现的样子,轻轻点击一下就可以把内容发布到服务器,还能得到所有文件变化的通知。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。