基於Web的分散式編寫和版本控制(WebDAV)是超文字傳輸協定(HTTP)的擴充,有利於使用者間協同編輯和管理儲存在全球資訊網伺服器文件。WebDAV由網際網路工程任務組的工作群組在RFC 4918中定義。
WebDAV協定為使用者在伺服器上建立、更改和移動文件提供了一個框架。WebDAV協定最重要的功能包括維護作者或修改日期的屬性、命名空間管理、集合和覆蓋保護。維護屬性包括建立、刪除和查詢檔案資訊等。命名空間管理處理在伺服器名稱空間內複製和移動網頁的能力。集合(Collections)處理各種資源的建立、刪除和列舉。覆蓋保護處理與鎖定檔案相關的方面。
許多現代作業系統為WebDAV提供了內建的客戶端支援。
歷史
WebDAV創始於1996年,當時加州大學爾灣分校博士畢業生Jim Whitehead與W3C共同主辦了兩場會議,與感興趣的人討論全球資訊網上的分散式創作問題。[1][2] 蒂姆·伯納斯-李對網路的最初看法是涉及閱讀和寫作的媒介。事實上,Berners Lee的第一個Web瀏覽器(WorldWideWeb),可以檢視和編輯網頁;但是,隨著網路的成長,對大多數使用者來說成為了唯讀媒介。懷特黑德和其他志同道合的人想超越這個限制。[3]
W3C會議決定成立一個IETF工作群組,因為新的工作將導致對HTTP進行擴充,而當時IETF已經開始對HTTP進行標準化。
隨著協定的工作開始,很明顯,同時處理分散式創作和版本控制將涉及太多的工作,並且任務將不得不分開。WebDAV小組專注於分散式創作,將版本控制留作以後研究。(The Delta-V extension added versioning later – see the Extensions section below.)
在網際網路工程指導組(IESG)接受RFC 2518的增量更新之後,WebDAV工作群組在2007年3月結束了其工作。當時還沒有完成的其他擴充,比如BIND方法,已經由其獨立作者獨立於正式工作群組完成。
實現
WebDAV擴充了request方法所允許的標準HTTP謂詞和HTTP頭。增加的謂詞包括:
- COPY
- 將資源從一個URI複製到另一個URI
- LOCK
- 鎖定一個資源。WebDAV支援共享鎖和互斥鎖。
- MKCOL
- 建立集合(即目錄)
- MOVE
- 將資源從一個URI移動到另一個URI
- PROPFIND
- 從Web資源中檢索以XML格式儲存的屬性。它也被多載,以允許一個檢索遠端系統的集合結構(也叫目錄階層)。
- PROPPATCH
- 在單個原子性動作中更改和刪除資源的多個屬性
- UNLOCK
- 解除資源的鎖定
伺服器支援
- Apache HTTP Server提供基於davfs和Apache Subversion (svn)的WebDAV模組。
- 微軟的IIS也有WebDAV模組。
- Nginx有非常有限的可選WebDav模組[4]和第三方模組[5]
- SabreDAV是一個PHP應用程式,可以在Apache或Nginx上使用,代替它們的捆綁模組
- Nextcloud是一個雲端儲存PHP應用程式,它提供了完整的WebDAV支援[6]
- lighttpd有一個可選的WebDav模組[7]
客戶端支援
- Git支援寫入HTTP遠端,儘管需要特殊伺服器支援的HTTP的「智慧型」Git協定已經成為WebDAV的首選協定
- Linux通過GVfs(包括GNOME檔案)或通過KIO(包括Konqueror和Dolphin)支援WebDAV
- macOS對CalDAV和CardDAV有原生支援,其設計基於WebDAV
- Microsoft Windows,其Explorer有原生支援
- Microsoft Office
- WebDAV軟體比較
參見
參考文獻
- ↑ Proposed agenda for San Mateo Meeting. 1996 [2018-02-03].
- ↑ Brief mtg. summary. 1996 [2018-02-03].
- ↑ Re: Updated agenda. [2018-02-03].
- ↑ Module ngx_http_dav_module. nginx website. [15 July 2016].
- ↑ Module nginx-dav-ext-module. github.com. [2 August 2016].
- ↑ Nextcloud 11 User Manual. nextcloud.com. [19 September 2017].
- ↑ lighttpd mod webdav.