【问题标题】:What's the difference between Webcal and WebDAV/CalDAV?Webcal 和 WebDAV/CalDAV 有什么区别?
【发布时间】:2015-07-14 22:28:00
【问题描述】:

据我了解,CalDAV 是 WebDAV 的扩展,用于管理 iCalendar 订阅。

而 Webcal 是一个 URL 方案,它做同样的事情,但不是标准化的。

我就在这里? 无论哪种方式都有哪些优点/缺点?

【问题讨论】:

    标签: icalendar webdav caldav webcal


    【解决方案1】:

    CalDAV 是一种协议,扩展了 WebDAV,即 HTTP。

    Webcal 是 AFAIK 由 Apple 发明的 URI 方案,其语义与“http”完全相同,只是 Safari(可能还有其他一些浏览器)知道 URI 指的是日历,因此调用“正确" 应用程序,而无需获取资源。

    (当然,正确的做法是检查媒体类型(内容类型标头字段),然后调用匹配的应用程序。

    所以这是一种反模式(Apple 使用“itms”URI 再次完成)。

    【讨论】:

    • 以“正确”方式执行此操作的问题是浏览器不会使用 url 启动应用程序,而是使用本地文件名。除非你写浏览器扩展。所以如果这是一个反模式,你如何以正确的方式解决这个问题?
    • 不确定你在这里想说什么。朱利安的答案包含正确的方法。现在,“浏览器”对“webcal”网址进行了特殊处理,这是“错误的”。相反,它应该对资源执行 HEAD(或 GET)请求,然后根据 MIME 类型调用适当的应用程序(使用 URL,而不是 [仅] 下载的文件)。 webcal 计划只是让事情顺利进行的快速技巧。
    【解决方案2】:

    Julian 所说的一切,但大概真正的问题是关于普通 iCalendar-over-HTTP(通常称为 webcal、“iCalendar 订阅”或“订阅日历”)和 CalDAV 之间的区别。或者换句话说:CalDAV 添加了什么。

    简单地说:在 iCoHTTP 中,您通常将整个日历存储在一个 URL 下, 像'http://yahoo.com/sports/nba/schedule-2015.ics'(或 webcal:)。这个网址 代表一个完整的日历并且几乎总是只读的(你不能对这个 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.:这有点令人困惑,但是是的,Apple 也有一种使用 WebDAV 来管理 iCalendar 订阅的方法。但这是与 CalDAV 一起工作的另一件事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      相关资源
      最近更新 更多