如何在iOS应用中通过ATS配置仅允许HTTP请求?
ATS配置实现全域名/子域名仅允许HTTP请求
你当前的配置仅关闭了任意加载,但ATS默认强制要求HTTPS连接,因此必须针对所有需要的域名(含子域名)添加例外规则才能实现仅允许HTTP请求的需求,具体配置步骤如下:
- 在
NSAppTransportSecurity字典下新增NSExceptionDomains字段,这是配置域名级别ATS例外的核心节点。 - 对每个主域名(比如
example.com)创建对应的子字典,配置以下关键字段:NSIncludesSubdomains: 设置为<true/>,确保该主域名下所有子域名都应用此例外规则NSExceptionAllowsInsecureHTTPLoads: 设置为<true/>,允许该域名及子域名发起HTTP请求
完整配置示例如下:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <false/> <key>NSExceptionDomains</key> <dict> <!-- 替换为你的主域名,可重复此块添加多个主域名 --> <key>example.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> <key>another-domain.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
注意事项:
- 需逐个添加所有需要支持的主域名,ATS不会自动匹配未配置的域名
- 若域名数量极多,可考虑将
NSAllowsArbitraryLoads设为<true/>,同时关闭NSAllowsArbitraryLoadsForMedia和NSAllowsArbitraryLoadsInWebContent(如果不需要媒体或网页视图的任意加载),但这种方式安全性较低,优先推荐域名例外的配置方式
内容的提问来源于stack exchange,提问作者Ashwini
相关产品推荐
相关产品推荐

