ios apple-app-site-association文件不是从服务器获取的,而是缓存在apple?

dz6r00yl  于 9个月前  发布在  iOS
关注(0)|答案(4)|浏览(239)

我们有通用链接工作了很长一段时间了。今天我添加了一个路径到AASA文件(让我们称之为sub 2)。该路径不被应用程序识别,即使在重新安装后。
当我调试的时候,我注意到这个文件是由applinks服务获取的,但是请求并没有进入我们的服务器。这个服务确实获取了旧的AASA文件,所以看起来苹果的CDN正在缓存这个文件。

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "redacted",
                "paths": [
                    "/main/*",
                    "/sub1/*",
                    "/sub2/*",
                    "/pagex-*"
                ]
            }
        ]
    },
    "activitycontinuation": {
        "apps": [
            "redacted"
        ]
    }
}

个字符

  • 文件没有缓存在我们这边/Cloudflare:上面的验证器确认了这一点,但为了确保我也清除了该高速缓存
  • iPhone控制台显示正在获取AASA文件:

第一个月

  • 在iPhone上创建了一个sysdiagnose文件,它显示AASA文件是在这个时间戳获取的,但内容是旧的内容:
Service:              applinks
App ID:               (redacted)
App Version:          2.3.4
App PI:               <LSPersistentIdentifier 0x101579cc0> { v = 0, t = 0x8, u = 0x11c0, db = 49C449xx-xxxx, {length = 8, bytes = 0xc011000000000000} }
Domain:               (redacted)
Patterns:             {"/":"/main/*"}, {"/":"/sub1/*"}, {"/":"/pagex*"}
User Approval:        unspecified
Site/Fmwk Approval:   approved
Flags:                
Last Checked:         2021-07-13 18:45:00 +0000
Next Check:           2021-07-18 18:36:18 +0000


苹果是否有效地缓存了文件,这是因为我们提供了错误的缓存头吗?如何测试他们的CDN,这些URL是公开的还是我可以在日志中找到它们?有没有办法在他们那边强制清除?

UPDATE:发现可以直接查询CDN,地址为https://app-site-association.cdn-apple.com/a/v1/yourdomain.com

=>此请求返回OLD文件,而原始文件(如Apple-From头中所述)是较新的!根据Age头,该文件只有几分钟的时间。

  • 酒店:这个问题终于解决了,我只能猜测CDN缓存刷新了。我已经确保我们的服务器现在发送了一个Cache-Control:no-store头,似乎这使得苹果CDN缓存它一个小时(最大年龄:3600),但在这一小时后,它被有效地刷新。

请注意,在突然的解决方案之前,CDN返回了一个文件,年龄只有几分钟,最大年龄为1800,所以我仍然不清楚为什么它在服务器文件更新后40小时没有提供新内容。
至少对于将来遇到类似问题的人来说,CDN url是一个非常好的调试起点:https://app-site-association.cdn-apple.com/a/v1/yourdomain.com

rqqzpn5f

rqqzpn5f1#

在这种情况下,您可以在为应用定义关联域名授权时使用developer备用模式。开发人员备用模式会绕过CDN缓存,直接进入您的服务器进行应用关联。
为此,将向关联的域权利添加一个查询字符串:
<service>:<fully qualified domain>?mode=developer
这是通过XCode访问的“关联域”功能。更多信息请参见文档:Adding capabilities to your app

v440hwme

v440hwme2#

不幸的是,你不能以我发现的任何方式清除苹果CDN的该高速缓存,但你至少可以确保它在更新时是正确的。

通过Apple服务器重新配置最新版本

这不会清除该高速缓存,但可以让您确认该高速缓存更新时是否正确。
1.转到:https://app-site-association.cdn-apple.com/a/v1/yourdomain.com
1.加一个?1或?添加任何查询字符串都会使cdn重新请求资源,这样你就可以看到当主URL更新时它是正确的。
同样,这并没有清除苹果设备实际使用的url的该高速缓存,但它确实允许你确认它将是正确的。

测试的开发/模式标志

正如其他人提到的,您可以在开发模式下添加开发人员或托管选项:
Apple文档-关联域-启用备用模式
例如

applinks:yourdomain.com?mode=developer

字符串

cgh8pdjw

cgh8pdjw3#

您可以使用以下命令在苹果端检查CDN版本的生命周期:
https://app-site-association.cdn-apple.com/a/v1/<yourdomain.com>
然后打开inspector以检查响应标题:

  • 年龄
  • Cache-Control:max-age

该高速缓存生存期等于max-age - age(以秒为单位)。
所以你必须等待这个时候,并重新检查与url https://app-site-association.cdn-apple.com/a/v1/<yourdomain.com>

sbtkgmzw

sbtkgmzw4#

您可以使用调试模式从您的服务器而不是从Apple CDN获取AASA文件。
第一个月
更多信息:https://github.com/NikKovIos/AASA-Universal-Links-Information/tree/main

相关问题