使用safari无法下载该文件,如何解决这个问题?

问题描述 投票:0回答:1

我正在使用 Pass 转换器(pass 转换器 github 链接)将 Google Pass 转换为 Apple Pass,输出存储在 AWS S3 中。当用户访问该链接时,它将下载 .pkpass (命名如下:applepass-95370f2a-cd77-4bcc-b52b-be22dff45415.pkpass)。但当我使用 iPhone 14 时,我收到“Safari 无法下载此文件”。

在Windows中通过更改用户代理,它正在被下载

知道如何解决这个问题,下面附有屏幕截图。

这是将 pkpass 发送到 s3 并返回链接的代码:

if (req.passText.charAt(0) === '{') {

        try {
            const pkPassBuffer = await googleToPkPass(JSON.parse(req.passText), req.fullUrl);
            // Respond with the PKPass file
            const params = { content: pkPassBuffer, contentType: 'application/vnd.apple.pkpass', }
            const applePassUrl = await uploadToS3(params);
            res.send({ msg: 'success', url: applePassUrl })
        } catch (e) {
            console.log(e);
        }

    }

 const uploadToS3 = async ({ content, contentType }) => {
 let random = seedrandom(`${new Date().getTime()}`)();
 const keyId = uuidv4(`link/${random}`, uuidv4.URL);
 const params = {
  Bucket: bucket,
   Key: `applepass-${keyId}.pkpass`,
   Body: content,
  ContentEncoding: "base64",
   ContentType: contentType,
   };

  const uploadedfile = await s3.upload(params).promise();
   return uploadedfile.Location.replace("s3.amazonaws.com/", "");
  }; 

error screenshot

我使用 pass validator 来验证通行证,它说: screenshot from pass validator

如何解决这个问题,以便我可以将这张通行证添加到苹果钱包

converters apple-wallet
1个回答
0
投票

更新: 我遇到问题是因为标头,因为我使用 aws 来存储 pkpass 文件,当我返回它进行下载时,我将其作为 json 内容类型而不是 contentType 发送:'application/vnd.apple.pkpass',

出现“Safari无法下载此文件”错误的原因主要是:

如果响应的 contentType 不是“application/vnd.apple.pkpass” 如果 pkpass 文件中不存在任何必填字段 如果证书无效

© www.soinside.com 2019 - 2024. All rights reserved.