Objective-C中WebKit无法加载HTTP内容的问题求助
问题原因
iOS 9及以后系统默认启用App Transport Security (ATS),该机制会阻止App加载非HTTPS的HTTP内容,这就是你用HTTP链接无法加载但HTTPS正常的核心原因。
解决方案
你可以通过修改Info.plist文件来配置ATS规则,以下是两种常用方案:
方案1:仅允许特定域名的HTTP请求(推荐,更安全)
这种方式只对指定域名开放HTTP权限,不会降低整个App的安全性。在Info.plist中添加以下配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>apple.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>
如果需要添加多个域名,在NSExceptionDomains下继续添加对应的域名字典即可。
方案2:全局禁用ATS(不推荐,仅测试或特殊场景使用)
这种方式会关闭整个App的ATS限制,存在安全风险,仅建议在测试环境临时使用。在Info.plist中添加以下配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
代码验证
你提供的加载代码本身没有问题,配置完ATS规则后,重新运行App即可正常加载HTTP链接:
NSString *loadedURL = @"http://www.apple.com"; NSURL *targetURL = [NSURL URLWithString:loadedURL]; NSURLRequest *request = [NSURLRequest requestWithURL:targetURL]; [_webView loadRequest:request];
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

