uniapp中NSAppTransportSecurity的配置问题如何解决
在uniapp开发iOS应用时,遇到NSAppTransportSecurity的配置问题该如何解决?我在info.plist中添加了ATS设置,但部分HTTP请求仍然被拦截。请问如何在uniapp中正确配置NSAppTransportSecurity以允许非HTTPS请求?是否需要额外的HBuilderX设置或原生代码修改?能否提供具体的配置示例?
2 回复
在 UniApp 中,NSAppTransportSecurity(ATS)是 iOS 平台的安全策略配置,用于控制 App 的网络请求是否必须使用 HTTPS。如果遇到 ATS 相关问题(如无法发起 HTTP 请求),需通过原生配置解决。以下是具体步骤:
解决方法
-
在
manifest.json中配置:- 打开项目根目录的
manifest.json文件。 - 在 “App 常用其他设置” -> “iOS 设置” 中,找到 “ATS” 相关选项(部分 HBuilderX 版本可能直接提供勾选项)。
- 若需允许 HTTP 请求,勾选 “允许不安全的 HTTP 请求” 或类似选项(具体名称可能因 HBuilderX 版本而异)。
- 打开项目根目录的
-
手动配置
info.plist(如果上述方法无效):- 在 HBuilderX 中,右键项目目录,选择 “原生 App 云端打包”。
- 在 “iOS 设置” 中,找到 “自定义 iOS plist 代码” 或类似字段。
- 添加以下代码以禁用 ATS 限制(允许所有 HTTP 请求):
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> - 若需仅允许特定域名使用 HTTP,可细化配置:
将<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>yourdomain.com</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> <key>NSIncludesSubdomains</key> <true/> </dict> </dict> </dict>yourdomain.com替换为实际域名。
-
重新打包:
- 修改配置后,需重新提交云端打包或本地打包,使配置生效。
注意事项
- 上架风险:完全禁用 ATS(
NSAllowsArbitraryLoads设为true)可能导致 App Store 审核被拒。建议仅针对特定域名配置例外。 - 测试环境:仅在开发或测试阶段临时禁用 ATS,生产环境应使用 HTTPS。
通过以上配置,可解决 UniApp 中因 ATS 限制导致的网络请求问题。


