Apple Contacts сначала отправляет пустую vCard в SabreDAV и после этого не может обновить - PullRequest
0 голосов
/ 05 сентября 2018

Я внедряю сервер CardDAV с SabreDAV и тестирую его с помощью Apple Contacts (11.0).

Я отладил запросы, которые отправляет приложение «Контакты», и понял, что: когда я создаю новую карту, и это занимает у меня более 10-15 секунд, тогда приложение «Контакты» сначала сохраняет пустую карту:

PUT /addressbooks/username/default/fa8cf515-7dc3-4665-967e-3773dc6c050a.vcf 

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//Mac OS X 10.13.6//EN
N:;;;
FN:
REV:2018-09-04T22:58:00Z
UID:fa8cf515-7dc3-4665-967e-3773dc6c050a
END:VCARD

SabreDAV создает карту и возвращает ETag. После этого, когда я действительно сохраняю карточку, приложение «Контакты» снова отправляет всю карточку в SabreDAV, но с заголовком If-None-Match:

If-None-Match: *

Поскольку карта с UID уже существует, SabreDAV возвращает 412, и, конечно, это правильный ответ.

Что мне делать? Не сохранить первый пустой vcard?

Если я создаю карточку достаточно быстро, приложение «Контакты» сохраняет всю карточку в первом запросе, после чего отправляет etag в заголовке If-None-Match, и все работает отлично!

...