Safari 在下载 .pkpass 时抛出错误

Safari is throwing a error while downloading .pkpass

我有一个带有 node.js 后端的 Web 服务器,它构建了一个 .pkpass 文件(经过认证,一切正常)。

在 pass.json webServiceURL = 'addressToBackEndpoint' 中用于通行证更新和 authenticationToken(只是随机的 32 个字母)。

当我尝试将生成的通行证安装到 walletpasses(在 android 上)时,它工作正常,没有错误。但是在 IPhone 上从相同的 URL 下载相同的通行证给我带来了 safari

的错误
Download Failed - Safari cannot download this file.

没有日志,无法找出问题所在。 PkPassValidator 说这次 pass 没有发现问题。

有什么错误的想法以及如何让它发挥作用吗?

您是否将下载请求的 header 设置为。我遇到了通过设置请求 header 修复的相同错误。这是相同的 PHP 代码,但问题似乎相同

    $response->headers->set('Content-Description',' File Transfer');
    $response->headers->set('Content-Disposition',' attachment; filename=' . $quoted);
    $response->headers->set('Content-Transfer-Encoding',' binary');
    $response->headers->set('Connection',' Keep-Alive');
    $response->headers->set('Expires',' 0');
    $response->headers->set('Cache-Control',' must-revalidate, post-check=0, pre-check=0');
    $response->headers->set('Pragma',' public');
    $response->headers->set('Content-Length', $size);
    $response->headers->set('Content-Type', mime_content_type($filename));
    $response->setContent($content);

已解决:

经过 closer 查看 pass.json,发现 url 中的 'o' 字母(被复制并粘贴到 pass.json 中)是另一种编码(虽然看起来很相似)

为确保一切正常,您可以使用一些编码校验器。

提示:使用 Apple 最好不要玩彩票,而是从 mac os 安装一个 iOS 模拟器(在我的情况下 Mac OS 在 VMWare 中),然后使用 MAC 控制台(不是 phone 的)启动模拟器,然后在连接的设备

上搜索 'pass' 日志