gpt4 book ai didi

iOS/OS X 日历应用程序和 CalDAV 服务自动发现

转载 作者:行者123 更新时间:2023-12-02 07:47:23 29 4
gpt4 key购买 nike

我正在使用 jsDAV 库(SabreDAV 库的 JavaScript 分支)构建自己的 CalDAV 服务器。现在我可以通过直接日历 url 提供日历服务(因此我已经设置了后端,包括身份验证后端和日历后端)。

我希望能够在 iOS/OS X 应用程序中使用自动服务发现。因此,如果我在 Mac 或 iPad 上设置 CalDAV 帐户,我希望只输入我的服务器名称、用户名/密码,而不输入任何网址等。

为此,我提供 /.well-known/caldav 地址 which must redirect a client to a root of my CalDAV server

所以,如果我将 DAV 服务器根目录放置在 /dav/ 中,我现在就从 /进行 302 到 /dav/ url。众所周知/caldav

接下来,这是从我的服务器角度来看的典型 iOS 自动发现 session 。服务器可通过 HTTPS 访问(所有证书均有效,无任何自签名证书),HTTP 已禁用。

  1. PROPFIND/.well-known/caldav HTTP/1.1 302 39 "-""iOS/7.1.1 (11D201)accountsd/1.0"
  2. PROPFIND/dav/HTTP/1.1 401 - “-”“iOS/7.1.1 (11D201)accountsd/1.0”
  3. PROPFIND/dav/HTTP/1.1"207 - "-""iOS/7.1.1 (11D201) accountd/1.0"

第一个请求是上述服务自动发现。这里一切正常,服务器用 302 回复/dav/。

第二行是对 /dav/ 的第一个请求,没有身份验证 header 。我回复 'WWW-Authenticate': 'Basic Realm="jsDAV" header 。

第三行是经过正确身份验证的 DAV 请求(我可以在我的身份验证后端日志和 jsDAV 调试日志中看到它)。这是我在这里得到的:

<?xml version="1.0" encoding="UTF-8"?>
<A:propfind xmlns:A="DAV:">
<A:prop>
<A:current-user-principal/>
<A:principal-URL/>
<A:resourcetype/>
</A:prop>
</A:propfind>

这是我发回的内容:

<?xml version="1.0" encoding="utf-8"?>
<d:multistatus
xmlns:d="DAV:"
xmlns:a="http://ajax.org/2005/aml"
xmlns:cal="urn:ietf:params:xml:ns:caldav"
xmlns:cs="http://calendarserver.org/ns/"
xmlns:dav="urn:DAV">
<d:response>
<d:href>/dav/</d:href>
<d:propstat>
<d:prop>
<d:current-user-principal>
<d:href>/dav/principals/me/</d:href>
</d:current-user-principal>
<d:resourcetype>
<d:collection/>
</d:resourcetype>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
</d:multistatus>

在这次(从我的角度来看是成功的)交换之后,iOS 告诉我它无法与我的服务器建立安全连接,并提议尝试不安全的连接。

这里出了什么问题?为什么 iOS 认为我的服务器坏了?

最佳答案

我找到了这个文档:http://wiki.wocommunity.org/display/~probert/CalDAV+and+CardDAV+handshake

我的问题的答案是:OPTIONS 请求被我的前端服务器阻止。因此,握手尚未完全完成。

关于iOS/OS X 日历应用程序和 CalDAV 服务自动发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23899271/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com