2015-05-05 30 views

回答

10

所有朱利安說,但可能真正的問題是關於簡單的iCalendar-HTTP(通常稱爲webcal,'iCalendar訂閱'或'訂閱日曆')和CalDAV之間的區別。或換句話說:CalDAV添加了什麼

簡而言之:在iCoHTTP中,您通常會存儲整個日曆在一個URL下, ,如'http://yahoo.com/sports/nba/schedule-2015.ics'(或webcal :)。這個URL 代表一個完整的日曆,幾乎總是隻讀的(你不能對這個URL做PUT)。這是爲什麼?因爲要在這樣的日曆中添加/更改/刪除單個事件,您需要重新傳輸完整日曆。

在CalDAV中,日曆是WebDAV集合,有一個URL表示日曆,例如'http://icloud.com/calendars/joe/home/',然後每個事件都有一個子URL。像'http://icloud.com/calendars/joe/home/buy-beer.ics','http://icloud.com/calendars/joe/home/family-meeting.ics'等。然後,您可以刪除,放入這樣一個集合的單個項目。

總結: 如果您只是想發佈很少更改且由其他方式(如CMS)管理的日曆,則可以使用iCal-over-HTTP。 如果您想提供用戶(或可能是一羣人)可以在其日曆客戶端內更改的日曆,則需要使用CalDAV。

CalDAV還具有一組擴展,例如,許多CalDAV服務器可以爲您自動執行安排操作(設置會議等)。有與其他人共享日曆的擴展程序,等等。

P.S .:這有點令人困惑,但是,蘋果公司也有一種使用WebDAV來管理iCalendar訂閱的方式。但這又是與CalDAV一起工作的另一件事。

+0

完美,謝謝你的簡潔解釋! –

2

CalDAV是一個協議,擴展了WebDAV,因此HTTP。

Webcal是一個URI方案,AFAIK是由Apple發明的,具有與「http」完全相同的語義,除了Safari(也可能是其他某些瀏覽器)知道URI引用日曆並因此調用「正確的「應用程序,而無需獲取資源。

(當然正確的事情本來只是檢查的媒體類型(Content-Type頭字段),然後調用匹配的應用程序。

所以這是一個反模式(蘋果再次完成與「itms」URIs)

+0

使用「正確」方式的問題是瀏覽器不會使用url啓動應用程序,而是使用本地文件名。除非你編寫瀏覽器擴展。所以如果這是一種反模式,你如何以正確的方式解決這個問題? – Evert

+0

不知道你在這裏想說什麼。朱利安的答案包含正確的方法。現在'瀏覽器'對'webcal'URL有特殊的處理,這是'錯誤的'。相反,它應該對資源執行HEAD(或GET)請求,然後根據MIME類型調用正確的應用程序(使用URL,而不是[僅]下載的文件)。 webcal計劃只是一件簡單的事情。 – hnh

+0

Evert:例如:http://greenbytes.de/tech/webdav/rfc4709。html –