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:解鎖。
如:移除資源的鎖定。
- LOCK:鎖定。
- 屬性管理:修改與某些資源相關的內容。舉例來說,使用者可以寫入並取回檔案的内容資訊。
- PROPFIND:檢索遠端系統的集文件的屬性列表,取得資源的屬性。
如:查詢檔案的大小、列出目錄下的內容。 - PROPPATCH:更新資源或集合的屬性。
如:修改、刪除資源的屬性、如調整檔案的 ACL 規則。
- PROPFIND:檢索遠端系統的集文件的屬性列表,取得資源的屬性。
- 命名儲存空間管理:有正確權限的使用者就可以在 WebVDAV 目錄中自由複製並移動檔案
- MOVE(可選):移動資源到另一個位置或重命名。
如:用於移動檔案、目錄。 - COPY(可選):將資源從一個位置(URL)複製到另一個位置(URL)。
如:用於複製檔案、目錄。
- MOVE(可選):移動資源到另一個位置或重命名。
WebDAV 協議流程
php 模組需求
- PHP module ctype
- PHP module dom
- PHP module GD
- PHP module iconv
- PHP module JSON
- PHP module libxml
- PHP module mbstring
- PHP module posix
- PHP module SimpleXML
- PHP module XMLReader
- PHP module XMLWriter
- PHP module zip
- PHP module zlib
伺服器啟動 webDAV
- 啟用 WebDAV 功能:
- 控制台:檔案服務(左選項) ➞ webDAV ➞ 啟動 WebDAV ➞ 套用。
- 控制台:檔案服務(左選項) ➞ webDAV ➞ 啟動 WebDAV ➞ 套用。
- 啟用匿名 WebDAV 帳號登入:允許用戶使用「anonymous」使用者名稱來透過 WebDAV 連線存取共用資料夾。
- 控制台:儲存空間(左選項) ➞ 儲存空間 ➞ 進階設定 ➞ 預設權限
- 選取「系統內部使用者帳號」
- 將「Anonymous FTP/We...」的選項打勾。(無帳號者權限)
- 控制台:儲存空間(左選項) ➞ 儲存空間 ➞ 進階設定 ➞ 預設權限
使用 webDAV
Firefox
- 網址列:https://ip:port/資料夾/檔案, port 若使用 http 預設 5005 ;若使用 https 預設 5006
- 同 session 的第一次讀取時,會要帳號密碼
- anonymous 資料夾,輸入帳號 anonymous ,免設密碼。
- 非 anonymous 資料夾,輸入有權讀取的帳號和密碼。
- 和 80 port 以 web 資料夾為根資料夾不同,webDAV 是 web 資料夾的上一層資料夾為網址列的根資料夾。
- 這是可以用瀏覽器看 php 原始碼的方法,目前 RT1900ac 是沒有開放任何外 port 可以導向內部的 webDAV 服務。
Windows 10
Windows 10 預設只允許 HTTPS WebDAV 連線,若需使用 HTTP 連線,必須先降低 Windows 10 的 WebClient 安全層級,才能使用 HTTP 連線 WebDAV。
- 改登錄 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
[BasicAuthLevel]之值由 1 改 2 - [以系統管理員身分執行 cmd]
- 執行「net stop webclient」先停止 WebClient 服務。可能會回覆「尚未啟動 WebClient 服務」。
- 再執行「net start webclient」,重新啟動 WebClient 服務。
- 去檔案總管,找到「本機」,按右鍵並「連線網路磁碟機」
- 輸入 協定 / ip / port 如右圖
- 輸入有效的使用者帳號及密碼,並點擊「確定」。 anonymous 會過,但無法使用。
- smb://ip/資料夾
- ftp://ip:21/資料夾
- sftp://ip:22
- dav://ip:5005/ 或 davs://ip:5006/
Mac 的檔案總管叫「Finder」
anonymous 登入