朴实无华的文件传输协议webdav

发布于2024-08-07

说到文件传输协议,很多读者可能能如数家珍般的说出很多,比如ftp,比如scp,比如smb,甚至比如s3。

但如果要选择一个实现最简单,最轻量的,支持最广泛的,那必然是webdav了。

Herbrhythm在一些简单服务需要提供文件传输时,也会内嵌一个webdav服务。

webdav是基于HTTP/1.1协议的文件传输协议。基本上,就是利用了HTTP的method代表不同的操作,扩展了部分http的响应码实现了操作的结果,一种很简单的用基础的HTTP协议来描述文件操作,将URI以及HTTP method与文件名与文件操作映射起来的协议。

从Windows xp开始,微软就支持将webdav挂载为网盘进行操作。绝大部分操作系统,比如linux.mac osx也支持webdav的操作。基于webdav的CalDAV和CardDAV也被安卓/iOs/Outlook等手机系统和工具广泛利用。可以说,基本上支持HTTP访问的系统/程序都能很简单的访问和操作WEBDAV上的资源。比如XMBC,Jupyter等优秀的开源软件也支持直接操作和使用Webdav服务器上的文件。可以说,webdav是支持最广的文件传输协议。

除了支持广,webdav还有个优点是协议简单。基本就是HTTP协议本身,甚至连标准的身份验证都没有,可以使用HTTP支持的验证方式,比如BasicAuth,Session,各种token。就客户端的支持来说,basic auth是最支持最官方的身份认证方式。同时,绝大部分适用于http的工具,比如基于反向代理的负载均衡技术,比如防止攻击的WAF都可以用来保护webdav。各种HTTP的访问规则也可以用来进行深度的文件权限控制。可以说,在互联网时代,HTTP发展的越强打,基于HTTP的WEBDAV也会更强大。

当然,Webdav也有其缺点。最简单的一点,由于HTTP协议本身,对于大量高频率2进制文件传输来说,可能webdav的效率并没有其他协议高。Webdav和基于ssh的scp协议比,无法远程进行一些法操作,比如摘要计算,在类似跨主机增量同步文件的场景下,可能也不是最佳的选择。由于采用标准的HTTP协议,Webdav向比其他文件传输协议也更容易受到互联网上常见的漏洞扫描的威胁。因此,虽然可以认为Webdav适用与大部分的适用场景,但在小部分场景下,会有更多更适合的选择,而不是强行适用Webdav协议。

因此,如果你有简单的文件传输需求,或者有继承到软件/服务里的需求,在确定场景适合Webdav的话,建议加入Webdav的协议进行尝试一下效果,我们觉得这是性价比很高的一种选择。