Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Icalendar 什么';Webcal和WebDAV/CalDAV的区别是什么?_Icalendar_Webdav_Caldav_Webcal - Fatal编程技术网

Icalendar 什么';Webcal和WebDAV/CalDAV的区别是什么?

Icalendar 什么';Webcal和WebDAV/CalDAV的区别是什么?,icalendar,webdav,caldav,webcal,Icalendar,Webdav,Caldav,Webcal,据我所知,CalDAV是WebDAV的扩展,用于管理iCalendar订阅 Webcal是一个URL方案,它做同样的事情,但不是标准化的 我就在这里? 这两种方式的优缺点是什么?CalDAV是一种协议,它扩展了WebDAV,从而扩展了HTTP Webcal是一种URI方案,AFAIK由Apple发明,其语义与“http”完全相同,只是Safari(可能还有其他一些浏览器)知道URI指的是日历,因此无需获取资源即可调用“正确”的应用程序 (当然,正确的做法应该是检查媒体类型(content-typ

据我所知,CalDAV是WebDAV的扩展,用于管理iCalendar订阅

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

我就在这里?
这两种方式的优缺点是什么?

CalDAV是一种协议,它扩展了WebDAV,从而扩展了HTTP

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

(当然,正确的做法应该是检查媒体类型(content-type头字段),然后调用匹配的应用程序


因此,这是一种反模式(苹果再次使用“itms”URI来实现)。

朱利安所说的一切,但可能真正的问题是HTTP上的普通iCalendar(通常称为webcal,'iCalendar subscription'或'subscribed calendar')和CalDAV之间的区别。或者换句话说,CalDAV添加了什么

简单地说:在iCoHTTP中,您通常将整个日历存储在一个URL下, 类似“”(或网络广播:)。此URL 表示一个完整的日历,并且几乎总是只读的(您不能对此URL执行PUT)。这是为什么?因为要在这样的日历中添加/更改/删除单个事件,您需要重新传输完整的日历

在CalDAV中,日历是一个WebDAV集合,有一个URL表示日历,例如:'',然后每个事件都有一个子URL。如''、''等。然后,您可以删除、放置等此类集合的单个项

总之: 如果您只是想发布一个很少更改且通过其他方式(如CMS)管理的日历,您可以通过HTTP使用iCal。 如果您想提供一个用户(或者一组人)可以在其日历客户端中更改的日历,您需要使用CalDAV

CalDAV还有一组扩展,例如,许多CalDAV服务器可以自动为您执行日程安排操作(设置会议等)。还有一个与其他人共享日历的扩展,等等


注:这有点让人困惑,但是的,苹果也有一种使用WebDAV管理iCalendar订阅的方法。但这是另一种与CalDAV一起工作的方法。

正确的做法的问题是浏览器启动应用程序时不使用url,而是使用本地文件名。除非您编写浏览器扩展。所以如果这是一个反模式,您如何以正确的方式修复它?不确定您想说什么。Julian的回答包含正确的方式。现在“浏览器”对“webcal”URL有特殊处理,这是“错误的”。相反,它应该对资源执行HEAD(或GET)请求,然后调用适当的应用程序(使用URL,而不仅仅是下载的文件)这取决于MIME的类型。webcal方案只是一个快速的黑客程序。