uniapp app transport security 如何配置

在uniapp开发iOS应用时,如何正确配置ATS(App Transport Security)以确保应用能正常访问HTTP接口?iOS默认要求HTTPS请求,但某些测试环境需要使用HTTP协议,该怎样在manifest.json或原生配置中修改ATS设置?

2 回复

在manifest.json中配置transportSecurity字段,设置allowInsecure为true,或在iOS的ATS中配置白名单。


在 UniApp 中配置 App Transport Security(ATS)主要针对 iOS 平台,用于控制应用对网络请求的安全策略(如 HTTPS 要求)。以下是配置方法:

1. 在 manifest.json 中配置

打开项目根目录的 manifest.json 文件,在 app-plusdistributeios 节点下添加 ATS 配置:

{
  "app-plus": {
    "distribute": {
      "ios": {
        "ATS": {
          "NSAllowsArbitraryLoads": true,
          "NSExceptionDomains": {
            "your-domain.com": {
              "NSIncludesSubdomains": true,
              "NSTemporaryExceptionAllowsInsecureHTTPLoads": true,
              "NSTemporaryExceptionMinimumTLSVersion": "TLSv1.1"
            }
          }
        }
      }
    }
  }
}

参数说明:

  • NSAllowsArbitraryLoads
    • true:允许所有 HTTP 请求(不强制 HTTPS),适用于测试或混合内容。
    • false:强制 HTTPS(默认推荐上架 App Store 时设为 false)。
  • NSExceptionDomains:为特定域名配置例外(如开发环境或第三方服务)。
    • NSIncludesSubdomains:是否包含子域名。
    • NSTemporaryExceptionAllowsInsecureHTTPLoads:是否允许该域名使用 HTTP。
    • NSTemporaryExceptionMinimumTLSVersion:指定最低 TLS 版本(如 TLSv1.1、TLSv1.2)。

2. 注意事项

  • 上架 App Store:苹果审核要求尽可能禁用 NSAllowsArbitraryLoads(设为 false),仅对必需域名配置例外。
  • 本地测试:若调试 HTTP 接口,可临时开启 NSAllowsArbitraryLoads: true,但提交前需恢复安全配置。
  • 域名格式:例外域名不要带协议(如写 example.com 而非 https://example.com)。

3. 重新打包

配置后需重新生成 App 包(运行 npm run build:app-plus 或通过 HBuilderX 打包),使配置生效。

通过以上步骤即可灵活管理 iOS 网络请求安全策略。

回到顶部