You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让IIS部署的EC2实例上的apple-app-site-association通过Apple验证

解决iOS深度链接apple-app-site-association验证失败的方案

一、先把文件本身的问题排查清楚

  • 检查apple-app-site-association的JSON语法,逗号、引号这些细节不能错,本地用JSON校验工具过一遍再上传。
  • 确认文件里的appIDs是Team ID+Bundle ID的准确组合,比如XYZ9876543.com.yourcompany.yourapp,一个字符都不能错。
  • 保证文件完全没有扩展名——Windows默认会隐藏已知扩展名,要先在文件夹选项里关掉这个设置,确认文件名就是apple-app-site-association,不是apple-app-site-association.txt或者apple-app-site-association.json(无扩展名是Apple要求的标准)。

二、IIS核心配置调整(关键步骤)

1. 设置正确的MIME类型

打开IIS管理器,找到你的站点:

  • 双击「MIME类型」,点击「添加」:
    • 文件扩展名:留空(不是填.,就是空着)
    • MIME类型:application/json
  • 顺便确认.json的MIME类型已经存在(如果没有也加上,防止备用的带扩展名文件出问题)。

2. 配置URL重写规则(避免Angular路由拦截)

在站点的web.config里,把Apple文件的访问规则放在Angular路由规则前面,确保爬虫能直接拿到文件:

<rewrite>
  <rules>
    <!-- 优先匹配Apple验证文件,阻止路由拦截 -->
    <rule name="Apple Root Association" stopProcessing="true">
      <match url="^apple-app-site-association$" />
      <action type="Rewrite" url="/apple-app-site-association" />
    </rule>
    <rule name="Apple Well-Known Association" stopProcessing="true">
      <match url="^.well-known/apple-app-site-association$" />
      <action type="Rewrite" url="/.well-known/apple-app-site-association" />
    </rule>
    <!-- 原有Angular路由规则放在后面 -->
    <rule name="Angular Routes" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/index.html" />
    </rule>
  </rules>
</rewrite>

3. 权限与端口检查

  • 给站点物理目录的IIS_IUSRS用户加上读取权限,确保服务器能正常返回文件。
  • 确认EC2安全组开放了443端口——Apple验证工具只认HTTPS,HTTP直接会失败。

三、Angular项目打包配置

在angular.json的assets数组里加上.well-known文件夹,确保打包时能把验证文件复制到dist目录:

"assets": [
  "src/favicon.ico",
  "src/assets",
  "src/.well-known" // 新增这一行
]

四、验证流程

  1. 手动访问https://你的域名/apple-app-site-association和https://你的域名/.well-known/apple-app-site-association,确认能正常返回JSON内容,且响应头的Content-Type是application/json。
  2. 清除浏览器缓存后再访问一遍,避免旧缓存干扰。
  3. 最后用Apple的验证工具测试,输入的域名要和文件里配置的完全一致。

内容的提问来源于stack exchange,提问作者waqar18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:55:22