Как заставить подписки iCalendar работать между несколькими браузерами/операционными системами?

На нашем сервере мы внедрили средство для получения динамических каналов iCalendar для наших событий. Для этого сначала вызывается сценарий Coldfusion, который отображает файл iCalendar и возвращает его после установки типа содержимого «текст/календарь; 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», отбрасывает некоторые вещи? Если это так, я думаю, мы могли бы реализовать правило перезаписи, чтобы решить эту проблему...


person jzimmerman2011    schedule 30.08.2012    source источник


Ответы (1)


Поэкспериментировав с этим еще немного, я не слишком уверен, есть ли надежный способ заставить это работать на нескольких платформах. Кажется, что для таких вещей, как iPhone и iPad, им требуется ссылка «webcal://», чтобы подписаться через приложение календаря Apple. Некоторые браузеры нормально работают с этим форматом, другие не очень.

На самом деле это потребует создания интерфейса, позволяющего людям выбирать подходящую загрузку для своего устройства, или использования User-Agent из запроса на стороне сервера для нацеливания ссылки в соответствующем формате для данного устройства/браузера.

person jzimmerman2011    schedule 02.11.2012