本節概述了使用 WebDAV 時經常遇到的術語。
URI。URI (統一資源識別碼) 是一種檔案識別碼,透過使用縮寫的 URL 提供一層額外的安全性。URL 的第一部分取代為 URL 對映,該對映可對使用者隱藏檔案的完整實體路徑名稱。
來源 URI。術語「來源 URI」是指可在該處存取資源來源的 URI。若要瞭解來源 URI 這一概念,請參閱以下範例:
一個名為 foo.jsp 的 JSP 頁面位於 URI/docs/date.jsp 處。該頁面包含 HTML 標記和 Java 程式碼,當執行該程式碼時,將在用戶端的瀏覽器中列印當天的日期。當伺服器收到來自用戶端對 foo.jsp 的 GET 請求後,會先執行該 Java 程式碼,然後才提供該頁面。用戶端不會收到駐留在伺服器上的 foo.jsp 頁面,而是收到一個顯示目前日期之動態產生的頁面。
如果建立了一個來源 URI (例如/publish/docs) 並將其對映至包含 foo.jsp 的 /docs 目錄,則對 /publish/docs/foo.jsp 的請求將是對 /docs/foo. jsp JSP 頁面來源碼的請求。在這種情況下,伺服器會直接提供頁面而不執行 Java 程式碼。用戶端會收到未經處理的頁面,與儲存在磁碟中的頁面一樣。
這樣,對來源 URI 的請求也就成了對資源來源的請求。
集合。WebDAV 集合是為 WebDAV 作業啟用的資源或資源集。集合包含一組稱為成員 URI 的 URI,它們識別啟用了 WebDAV 的成員資源。
內部成員 URI。與集合 URI 直接相對的成員 URI。例如,若 URL 為 http://info.sun.com/resources/info 的資源啟用了 WebDAV,並且 URL 為 http://info.sun.com/resources/ 的資源也啟用了 WebDAV,則 URL 為 http://info.sun.com/resources/ 的資源就是一個集合,它包含 http://info.sun.com/resources/info,並以其做為內部成員。
特性。包含有關資源的描述性資訊的「名稱/值」對。使用特性可以有效地查找和管理資源。例如,或許可以使用特性「creationdate」依資源的建立日期對全部資源進行索引,或者使用特性「author」依作者姓名進行索引。
動態特性。由伺服器強制執行的特性。例如,動態特性 getcontentlength 有一個值,即由 GET 請求傳回的實體長度,它是由伺服器自動計算的。動態特性具有以下特徵:
特性值是唯讀的,由伺服器維護
特性值由用戶端維護,但是伺服器對提交的值執行語法檢查。
靜態特性。伺服器未強制執行的特性。伺服器僅記錄靜態特性的值;用戶端負責維護其一致性。
伺服器支援下列動態特性:
creationdate
displayname
getcontentlanguage
getcontentlength
getcontenttype
gettag
getlastmodified
lockdiscovery
resourcetype
supportedlock
executable
伺服器支援的動態特性 executable,可讓用戶端變更與資源相關聯的檔案權限。
以下為對 executable 動態特性 PROPPATCH 請求的範例:
PROPPATCH /test/index.html HTTP/1.1
Host: sun
Content-type: text/xml
Content-length: XXXX
<?xml version="1.0"?>
<A:propertyupdate xmlns:A="DAV:" xmlns:B="http://apache.org/dav/props/">
<A:set>
<A:prop>
<B:executable>T</B:executable>
</A:prop>
</A:set>
</A:propertyupdate>
鎖定。鎖定資源功能提供了這樣一種機制,即可以保證一個使用者編輯資源時,其他使用者不能進行修改。鎖定可以防止發生覆寫衝突並解決了「遺失更新」問題。
伺服器支援兩種類型的鎖定:共用與專用。
新增 HTTP 標頭。WebDAV 透過延伸 HTTP/1.1 協定進行工作。它定義了新的 HTTP 標頭,用戶端可以通過該標頭傳送 WebDAV 資源請求。這些標頭為:
Destination:
Lock-Token:
Timeout:
DAV:
If:
Depth:
Overwrite:
新的 HTTP 方法。 WebDAV 推出了數種新的 HTTP 方法,可指示啟用 WebDAV 的伺服器如何處理請求。這些方法是對現有方法 (例如GET、PUT 和 DELETE) 的補充,用來執行 WebDAV 異動。下面簡要描述了這些新 HTTP 方法:
COPY。用於複製資源。當 Destination: 標頭指定目標時,使用 Depth: 標頭複製集合。必要時 COPY 方法也會使用 Overwrite: 標頭。
MOVE。用於移動資源。當 Destination: 標頭指定目標時,使用 Depth: 標頭移動集合。在適當情況下,MOVE 方法也使用 Overwrite: 標頭。
PROPFIND。用於擷取一個或多個資源中的一個或多個特性。當用戶端向伺服器提交對某個集合的 PROPFIND 請求時,該請求可能會包含一個值 為 0、1 或 infinity 的 Depth: 標頭。
0。指定將會擷取指定 URI 位置的集合特性。
1。指定將會擷取集合特性以及直接位於指定 URI 之下的資源特性。
infinity。指定將會擷取集合及其包含的全部成員 URI 的特性。請注意,由於深度為無窮大的請求需要遍歷整個集合,因而會顯著增加伺服器的負擔。