WebDAV

出自福留子孫
跳轉到: 導覽搜尋

WebDAV 是 web-based distributed authoring and versioning(基於 Web 的分散式登入與版本控制) 的簡稱。它是 HTTP(S) 協定的一種延伸,可讓 Web 伺服器變成一般標準的網路磁碟。在啟用 WebDAV 服務後,你就能透過 HTTP 或 HTTPS 協定連線至 NAS。

WebDAV 定義

HTTP 和 Web 最初是作為讀 / 寫而發明的環境。

  • GET:讀取(資料)。
  • PUT:寫入或創建(資料)。
  • DELETE:刪除(資料)。
  • POST:傳輸(訊息資料)方法。

WebDAV 是藉由額外定義 HTTP 中的 methods 與 headers 來實現遠端檔案存取上所需的操作與資訊傳遞:

  • The method :描述被 Client端 執行的方法。
  • Headers :描述有關工作如何被完成的指令。
  • A body (optional):定義指令用到的資料或有關方法如何被執行的額外指令。

以下是他額外定義的 methods:

  • MKCOL:建立目錄。
  • 覆寫保護:如此多位使用者,可同時讀取檔案,但一次只有一個人可以修改檔案。
    • LOCK:鎖定。
      如:資源以供寫入、讀取,支援檔案系統常見的共享鎖與互斥鎖。
    • UNLOCK:解鎖。
      如:移除資源的鎖定。
  • 屬性管理:修改與某些資源相關的內容。舉例來說,使用者可以寫入並取回檔案的内容資訊。
    • PROPFIND:檢索遠端系統的集文件的屬性列表,取得資源的屬性。
      如:查詢檔案的大小、列出目錄下的內容。
    • PROPPATCH:更新資源或集合的屬性。
      如:修改、刪除資源的屬性、如調整檔案的 ACL 規則。
  • 命名儲存空間管理:有正確權限的使用者就可以在 WebVDAV 目錄中自由複製並移動檔案
    • MOVE(可選):移動資源到另一個位置或重命名。
      如:用於移動檔案、目錄。
    • COPY(可選):將資源從一個位置(URL)複製到另一個位置(URL)。
      如:用於複製檔案、目錄。

WebDAV 協議流程

php 模組需求

  1. PHP module ctype
  2. PHP module dom
  3. PHP module GD
  4. PHP module iconv
  5. PHP module JSON
  6. PHP module libxml
  7. PHP module mbstring
  8. PHP module posix
  9. PHP module SimpleXML
  10. PHP module XMLReader
  11. PHP module XMLWriter
  12. PHP module zip
  13. PHP module zlib

伺服器啟動 webDAV

  • 啟用 WebDAV 功能:
    1. 控制台:檔案服務(左選項) ➞ webDAV ➞ 啟動 WebDAV ➞ 套用。

  • 啟用匿名 WebDAV 帳號登入:允許用戶使用「anonymous」使用者名稱來透過 WebDAV 連線存取共用資料夾。
    1. 控制台:儲存空間(左選項) ➞ 儲存空間 ➞ 進階設定 ➞ 預設權限
    2. 選取「系統內部使用者帳號」
    3. 將「Anonymous FTP/We...」的選項打勾。(無帳號者權限)

使用 webDAV

Firefox

  1. 網址列:https://ip:port/資料夾/檔案, port 若使用 http 預設 5005 ;若使用 https 預設 5006
  2. 同 session 的第一次讀取時,會要帳號密碼
    • anonymous 資料夾,輸入帳號 anonymous ,免設密碼。
    • 非 anonymous 資料夾,輸入有權讀取的帳號和密碼。
  3. 和 80 port 以 web 資料夾為根資料夾不同,webDAV 是 web 資料夾的上一層資料夾為網址列的根資料夾。
  4. 這是可以用瀏覽器看 php 原始碼的方法,目前 RT1900ac 是沒有開放任何外 port 可以導向內部的 webDAV 服務。

Windows 10

Windows 10 預設只允許 HTTPS WebDAV 連線,若需使用 HTTP 連線,必須先降低 Windows 10 的 WebClient 安全層級,才能使用 HTTP 連線 WebDAV。

  1. 改登錄 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
    [BasicAuthLevel]之值由 1 改 2
  2. [以系統管理員身分執行 cmd]
  3. 執行「net stop webclient」先停止 WebClient 服務。可能會回覆「尚未啟動 WebClient 服務」。
  4. 再執行「net start webclient」,重新啟動 WebClient 服務。
  5. 去檔案總管,找到「本機」,按右鍵並「連線網路磁碟機」
  6. 輸入 協定 / ip / port 如右圖
  7. 輸入有效的使用者帳號及密碼,並點擊「確定」。 anonymous 會過,但無法使用。





  1. smb://ip/資料夾
  2. ftp://ip:21/資料夾
  3. sftp://ip:22
  4. dav://ip:5005/ 或 davs://ip:5006/


Mac 的檔案總管叫「Finder」


anonymous 登入

參考資料

  1. 用PHP實現WebDAV
  2. php版dav,在 Apache 上配置 WebDAV 伺服器
  3. 使用php開發發現webdav協議的項目
  4. Nextcloud 安裝準備