IIS托管apple-app-site-association文件验证报错,如何配置web.config及多应用部署
IIS部署apple-app-site-association(AASA)文件的标准配置
前置核心问题澄清
你之前配置的.htaccess规则完全不会在IIS服务器生效——.htaccess是Apache专用的配置文件,IIS无原生解析机制,这是你MIME类型配置不生效、校验器持续报错的核心原因之一。哪怕本地浏览器直接访问能看到文件内容,只要响应头的MIME类型不符合要求、或者匿名请求被站点身份验证机制拦截,第三方校验工具就会返回错误。
是否需要在web.config中新增配置
必须配置。IIS默认无法正确处理无扩展名的AASA文件,需要在对应站点根目录的web.config中添加三类规则:
- 放开对无扩展名文件的访问限制,避免默认拦截规则返回404错误
- 为无扩展名的AASA文件指定正确的
application/jsonMIME类型,避免IIS默认将无扩展名文件识别为二进制下载流 - 允许匿名访问AASA的两个标准请求路径,避免站点的身份验证机制(表单认证、Windows认证等)拦截匿名爬虫、校验器的请求
可直接参考以下配置片段,将其嵌入到站点根目录web.config的<configuration>节点下:
<configuration> <system.webServer> <!-- 为无扩展名文件指定正确MIME类型,先移除可能存在的重复配置避免报错 --> <staticContent> <remove fileExtension="" /> <mimeMap fileExtension="" mimeType="application/json" /> </staticContent> <requestFiltering> <fileExtensions allowUnlisted="true" /> </requestFiltering> </system.webServer> <!-- 允许匿名访问两个AASA标准路径 --> <location path="apple-app-site-association"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path=".well-known/apple-app-site-association"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> </configuration>
注意:如果站点启用了URL Rewrite规则,需要额外添加排除规则,将
/apple-app-site-association和/.well-known/apple-app-site-association两个路径跳过重写逻辑,避免请求被导向登录页、404页等非文件响应内容。
多独立应用的IIS站点部署AASA的正确操作
当IIS站点下挂载了多个独立隔离的子应用时,必须按以下规则部署AASA:
- 先找到对应Universal Links域名绑定的顶层物理站点根目录,绝对不要将AASA文件放到任何子应用的虚拟目录下——Apple的校验服务只会从域名根路径请求AASA,子应用目录下的文件路径(如
https://域名/子应用路径/apple-app-site-association)不符合官方规范,不会被识别 - 将无扩展名的
apple-app-site-association文件直接放入该顶层站点的物理根目录;如果要按.well-known官方规范部署,就在顶层物理根目录下新建.well-known文件夹,将文件放入该文件夹内 - 确保IIS匿名访问账号对AASA文件、.well-known文件夹拥有读取权限,避免权限不足导致的403错误
- 如果同一个IIS站点绑定了多个独立域名,需要为每个域名对应的物理路径单独配置匹配的AASA文件,不能跨域名共用
校验报错快速排查清单
配置完成后可对照以下点快速定位问题:
- 检查AASA请求的响应头
Content-Type值,必须为application/json - 确认响应状态码为200,不能存在重定向、403、404类响应
- 检查AASA文件内容为严格合法JSON,不能包含BOM头、多余注释、首尾空行
- 不要给AASA文件追加
.json后缀,否则Apple官方服务无法识别
内容的提问来源于stack exchange,提问作者Mohamad Mousheimish
相关产品推荐
相关产品推荐

