在我们的服务器上,我们已经实现了一种为我们的活动获取动态 iCalendar 提要的方法。这是通过首先调用呈现 iCalendar 文件的 Coldfusion 脚本来处理的,并在将内容类型设置为“text/calendar; charset=UTF-8”后返回该脚本。被称为是这样的:http://www.mysite.com/ical.cfm?calendar_id=1
但是,我们注意到这会导致移动设备等设备之间出现问题。iPad 不会“订阅”它,而是导入事件;这不好,因为我们希望这些更新。其他浏览器只是提示下载 ICS 文件,这又会导致人们导入单个文件而不是真正“订阅”事件(我们还使用 Content-Disposition 标头将文件名固定为“.ics”下载为“.cfm”)。
然后我们尝试在链接上使用“webcal://”而不是“http://”。这似乎解决了 iPad 的问题,然后 Firefox 会要求在另一个应用程序中打开链接(我猜有人可以选择他们的日历应用程序)。但是,现在 Chrome 不会做任何事情;我们点击链接,它什么也不做。Webcal 不是标准的“协议”,所以我可能会遇到问题。
现在,我打开 Wireshark 来检查一个提供 Google iCalendar 文件的数据包(它在任何浏览器和 iPad 中都可以很好地链接),除了一些缓存头和自定义的“X”头之外,它并没有什么特别之处,唯一的需要注意的是内容类型被设置为我们提供的内容。
所以,我想知道是否有人有一些关于让它在所有浏览器和 iPad/iPhone 上同样工作的建议。难道是链接调用“.cfm”而不是“.ics”的事实正在抛出一些东西吗?如果是这样,我想我们可以实施重写规则来解决这个问题......