无法加载资源,因为 App Transport Security 策略要求使用安全连接
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection
当我将 Xcode 更新到 7.0 或 iOS 9.0 时,我遇到了问题。
不知何故,它开始给我标题错误
"The resource could not be loaded because the App Transport Security
policy requires the use of a secure connection"
网络服务方法:
-(void)ServiceCall:(NSString*)ServiceName :(NSString *)DataString
{
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfiguration setAllowsCellularAccess:YES];
[sessionConfiguration setHTTPAdditionalHeaders:@{ @"Accept" : @"application/json" }];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",ServiceURL]];
NSLog(@"URl %@%@",url,DataString);
// Configure the Request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:[NSString stringWithFormat:@"%@=%@", strSessName, strSessVal] forHTTPHeaderField:@"Cookie"];
request.HTTPBody = [DataString dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPMethod = @"Post";
// post the request and handle response
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
// Handle the Response
if(error)
{
NSLog(@"%@",[NSString stringWithFormat:@"Connection failed: %@", [error description]]);
// Update the View
dispatch_async(dispatch_get_main_queue(), ^{
// Hide the Loader
[MBProgressHUD hideHUDForView:[[UIApplication sharedApplication] delegate].window animated:YES];
});
return;
}
NSArray * cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:request.URL];
for (NSHTTPCookie * cookie in cookies)
{
NSLog(@"%@=%@", cookie.name, cookie.value);
strSessName=cookie.name;
strSessVal=cookie.value;
}
NSString *retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}];
[postDataTask resume];
}
该服务 运行 适用于 Xcode 早期版本和 iOS 早期版本 但是当我更新到 Xcode 7.0 时 iOS 9.0,当我调用上面的网络服务方法时,它开始给我如下问题。我得到的记录错误是:
Connection failed: Error Domain=NSURLErrorDomain Code=-1022 "The
resource could not be loaded because the App Transport Security policy
requires the use of a secure connection."
UserInfo={NSUnderlyingError=0x7fada0f31880 {Error
Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"},
NSErrorFailingURLStringKey=MyServiceURL,
NSErrorFailingURLKey=MyServiceURL,
NSLocalizedDescription=The resource could not be loaded because the
App Transport Security policy requires the use of a secure
connection.}
我尝试了以下问题和答案,但没有得到任何结果,是否有任何先进的想法可以消除该服务调用错误?
我已经通过在 info.plist 中添加一些密钥解决了这个问题。
我遵循的步骤是:
打开了我的项目目标的 info.plist
文件
添加了一个名为 NSAppTransportSecurity
的密钥作为 Dictionary
。
添加了一个名为 NSAllowsArbitraryLoads
的子项作为 Boolean
并将其值设置为 YES
,如下图所示。
清理项目,现在一切都运行和以前一样好了。
参考 Link:
编辑:
或者在 info.plist
文件的源代码中,我们可以添加:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
您只需要在 URL 中使用 HTTPS 而不是 HTTP 就可以了
iOS 9(可能)强制开发人员仅使用 App Transport Security。我在某个地方无意中听到了这句话,所以我自己也不知道这是不是真的。但我对此表示怀疑并得出了这个结论:
应用 运行ning on iOS 9 将(可能)不再连接到没有 SSL 的 Meteor 服务器。
这意味着 运行ning meteor 运行 ios 或 meteor 运行 ios-设备将(可能?)不再工作。
在应用程序的 info.plist 中,NSAppTransportSecurity [Dictionary]
需要将键 NSAllowsArbitraryLoads [Boolean]
设置为 YES
或 Meteor 需要使用 https
作为其localhost server
很快。
传输安全性 在 iOS 9.0 或更高版本以及 OS X v10.11 及更高版本中提供。
因此默认情况下仅允许在应用程序中调用 https。要关闭 App Transport Security,请在 info.plist 文件中添加以下行...
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我已经解决为plist文件。
添加 NSAppTransportSecurity:字典。
添加名为“NSAllowsArbitraryLoads”的子项作为布尔值:是
请注意,在项目的 info.plist
中使用 NSAllowsArbitraryLoads = true
会导致与任何服务器的所有连接都不安全。如果您想确保只有 特定域 可以通过不安全的连接访问,请尝试以下操作:
或者,作为源代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>domain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
编辑后清理并构建项目。
在 Xcode 7.1 之后(swift 2.0)
对于iOS 10.x和Swift 3.x [以下版本也支持]只需在'info.plist'
中添加以下行
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我结合使用了很多提到的选项设法解决了这个问题。我将包括一份清单,列出我必须做的所有事情才能让它发挥作用。
简而言之:
- 将我的手表扩展(不是我的手表应用)的
NSAllowsArbitraryLoads
设置为 true。
- 确保我使用的是
https
而不是 http
。
第一步:
首先,最明显的是,我必须在手表扩展的 info.plist
中添加一个 NSAppTransportSecurity
键作为字典,其中一个名为 NSAllowsArbitraryLoads
的子键作为布尔值设置为 true。 仅在手表扩展中设置此项,而不是在手表应用程序的 plist 中设置。尽管请注意,这允许所有连接并且可能不安全。
或
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
第二步:
然后我必须确保我尝试加载的 url 是 https
而不仅仅是 http
。对于任何仍然是 http 的 urls,我使用:
Swift:
let newURLString = oldURLString.stringByReplacingOccurrencesOfString("http", withString: "https")
Obj-C:
NSString *newURLString = [oldURLString stringByReplacingOccurrencesOfString:@“http” withString:@“https”];
我已经在使用一年签名证书而不是选项 "NSAllowsArbitraryLoads"
的自托管解析服务器的情况下解决了这个问题
解析服务器,因为任何 node.js 服务器都会提供您必须指定的 public https url。例如:
parse-server --appId --masterKey --publicServerURL https://your.public.url/some_nodejs
有空可以看看我的configuration files
如果您使用的是 Xcode 8.0 和 swift 3.0 或 2.2
来自 Apple 文档
如果您正在开发新应用,您应该只使用 HTTPS。如果您已有应用程序,则应立即尽可能多地使用 HTTPS,并制定计划以尽快迁移应用程序的其余部分。此外,您通过更高级别的 API 进行的通信需要使用具有前向保密性的 TLS 1.2 版进行加密。如果您尝试建立不符合此要求的连接,则会抛出错误。如果您的应用需要向不安全的域发出请求,您必须在应用的 Info.plist 文件中指定此域。
绕过应用程序传输安全:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
允许所有不安全的域
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
阅读更多:Configuring App Transport Security Exceptions in iOS 9 and OSX 10.11
如果您不是 XML 的忠实粉丝,那么只需在您的 plist 文件中添加以下标签即可。
如果您使用的是 Xcode 8.0 到 8.3.3 和 swift 2.2 到 3.0
In my case need to change in URL http:// to https:// (if not working then try)
Add an App Transport Security Setting: Dictionary.
Add a NSAppTransportSecurity: Dictionary.
Add a NSExceptionDomains: Dictionary.
Add a yourdomain.com: Dictionary. (Ex: whosebug.com)
Add Subkey named " NSIncludesSubdomains" as Boolean: YES
Add Subkey named " NSExceptionAllowsInsecureHTTPLoads" as Boolean: YES
打开您的 pList.info 作为 源代码 并在底部 </dict>
之前添加以下代码,
<!--By Passing-->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>your.domain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>1.0</string>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
<!--End Passing-->
最后用你的基础 Url 改变 your.domain.com
。谢谢
无法加载资源,因为应用程序传输安全策略要求使用在 Swift 4.03 中工作的安全连接。
打开您的 pList.info 作为源代码并粘贴:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
确保更改正确的 info.plist 文件。
这是第二次我浪费时间在这个问题上,因为我没有注意到我在改变info.plist 在 MyProjectNameUITests 下。
在Swift4中可以使用
->去Info.plist
-> 点击信息属性列表的加号
->添加 应用程序传输安全设置 作为字典
-> 单击加号图标 应用程序传输安全设置
-> 添加允许任意加载 设置YES
波纹管图像看起来像
对于那些在本地主机上开发的人,请遵循以下步骤:
- 点击
Information Property List
旁边的“+”按钮并添加 App Transport Security Settings
并为其指定一个 Dictionary
类型
- 点击新创建的
App Transport Security Settings
条目旁边的“+”按钮并添加 Boolean
类型的 NSExceptionAllowsInsecureHTTPLoads
并将其值设置为 YES
。
- 右键单击
NSExceptionAllowsInsecureHTTPLoads
条目并单击 "Shift Row Right" 选项使其成为上述条目的子条目。
- 点击
NSExceptionAllowsInsecureHTTPLoads
条目旁边的“+”按钮并添加 Boolean
类型的 Allow Arbitrary Loads
并将其值设置为 YES
注意:最终应该看起来像下图所示
这是 Apple 强制加强 API 安全性的方法(强制使用 https 而不是 http)。我将解释如何删除此安全设置。
此处的大多数答案都指出将此密钥添加到您的 info.plist
仅此一项并没有为我解决这个问题。
我不得不在里面添加相同的键
Project -> Targets -> Info -> Custom iOS Target Properties
然而,这将允许来自任何人的不安全连接发生。如果您只想允许特定域使用建立不安全的连接,您可以将以下内容添加到您的 info.plist.
如果你使用firebase,它会在NSAppTransportSecurity
部分添加NSAllowsArbitraryLoadsInWebContent = true
,而NSAllowsArbitraryLoads = true
将不起作用
在XCode 12.5。 IOS 14. 我做了以下条目
这就是 info.plist 源代码的样子
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
对于 XCode 13,添加 Allow Arbitrary Loads
并不是一件简单的工作。因为默认情况下没有名为 App Transport Security Settings
.
的键
您必须通过按 Info/Custom iOS 目标属性下看到的任何加号按钮来了解如何添加新的根级密钥。
查看详情link:
当我将 Xcode 更新到 7.0 或 iOS 9.0 时,我遇到了问题。 不知何故,它开始给我标题错误
"The resource could not be loaded because the App Transport Security policy requires the use of a secure connection"
网络服务方法:
-(void)ServiceCall:(NSString*)ServiceName :(NSString *)DataString
{
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
[sessionConfiguration setAllowsCellularAccess:YES];
[sessionConfiguration setHTTPAdditionalHeaders:@{ @"Accept" : @"application/json" }];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@",ServiceURL]];
NSLog(@"URl %@%@",url,DataString);
// Configure the Request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:[NSString stringWithFormat:@"%@=%@", strSessName, strSessVal] forHTTPHeaderField:@"Cookie"];
request.HTTPBody = [DataString dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPMethod = @"Post";
// post the request and handle response
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
// Handle the Response
if(error)
{
NSLog(@"%@",[NSString stringWithFormat:@"Connection failed: %@", [error description]]);
// Update the View
dispatch_async(dispatch_get_main_queue(), ^{
// Hide the Loader
[MBProgressHUD hideHUDForView:[[UIApplication sharedApplication] delegate].window animated:YES];
});
return;
}
NSArray * cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:request.URL];
for (NSHTTPCookie * cookie in cookies)
{
NSLog(@"%@=%@", cookie.name, cookie.value);
strSessName=cookie.name;
strSessVal=cookie.value;
}
NSString *retVal = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}];
[postDataTask resume];
}
该服务 运行 适用于 Xcode 早期版本和 iOS 早期版本 但是当我更新到 Xcode 7.0 时 iOS 9.0,当我调用上面的网络服务方法时,它开始给我如下问题。我得到的记录错误是:
Connection failed: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSUnderlyingError=0x7fada0f31880 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}, NSErrorFailingURLStringKey=MyServiceURL, NSErrorFailingURLKey=MyServiceURL, NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.}
我尝试了以下问题和答案,但没有得到任何结果,是否有任何先进的想法可以消除该服务调用错误?
我已经通过在 info.plist 中添加一些密钥解决了这个问题。 我遵循的步骤是:
打开了我的项目目标的
info.plist
文件添加了一个名为
NSAppTransportSecurity
的密钥作为Dictionary
。添加了一个名为
NSAllowsArbitraryLoads
的子项作为Boolean
并将其值设置为YES
,如下图所示。
清理项目,现在一切都运行和以前一样好了。
参考 Link:
编辑:
或者在 info.plist
文件的源代码中,我们可以添加:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
您只需要在 URL 中使用 HTTPS 而不是 HTTP 就可以了
iOS 9(可能)强制开发人员仅使用 App Transport Security。我在某个地方无意中听到了这句话,所以我自己也不知道这是不是真的。但我对此表示怀疑并得出了这个结论:
应用 运行ning on iOS 9 将(可能)不再连接到没有 SSL 的 Meteor 服务器。
这意味着 运行ning meteor 运行 ios 或 meteor 运行 ios-设备将(可能?)不再工作。
在应用程序的 info.plist 中,NSAppTransportSecurity [Dictionary]
需要将键 NSAllowsArbitraryLoads [Boolean]
设置为 YES
或 Meteor 需要使用 https
作为其localhost server
很快。
传输安全性 在 iOS 9.0 或更高版本以及 OS X v10.11 及更高版本中提供。
因此默认情况下仅允许在应用程序中调用 https。要关闭 App Transport Security,请在 info.plist 文件中添加以下行...
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我已经解决为plist文件。
添加 NSAppTransportSecurity:字典。
添加名为“NSAllowsArbitraryLoads”的子项作为布尔值:是
请注意,在项目的 info.plist
中使用 NSAllowsArbitraryLoads = true
会导致与任何服务器的所有连接都不安全。如果您想确保只有 特定域 可以通过不安全的连接访问,请尝试以下操作:
或者,作为源代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>domain.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
编辑后清理并构建项目。
在 Xcode 7.1 之后(swift 2.0)
对于iOS 10.x和Swift 3.x [以下版本也支持]只需在'info.plist'
中添加以下行<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我结合使用了很多提到的选项设法解决了这个问题。我将包括一份清单,列出我必须做的所有事情才能让它发挥作用。
简而言之:
- 将我的手表扩展(不是我的手表应用)的
NSAllowsArbitraryLoads
设置为 true。 - 确保我使用的是
https
而不是http
。
第一步:
首先,最明显的是,我必须在手表扩展的 info.plist
中添加一个 NSAppTransportSecurity
键作为字典,其中一个名为 NSAllowsArbitraryLoads
的子键作为布尔值设置为 true。 仅在手表扩展中设置此项,而不是在手表应用程序的 plist 中设置。尽管请注意,这允许所有连接并且可能不安全。
或
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
第二步:
然后我必须确保我尝试加载的 url 是 https
而不仅仅是 http
。对于任何仍然是 http 的 urls,我使用:
Swift:
let newURLString = oldURLString.stringByReplacingOccurrencesOfString("http", withString: "https")
Obj-C:
NSString *newURLString = [oldURLString stringByReplacingOccurrencesOfString:@“http” withString:@“https”];
我已经在使用一年签名证书而不是选项 "NSAllowsArbitraryLoads"
的自托管解析服务器的情况下解决了这个问题解析服务器,因为任何 node.js 服务器都会提供您必须指定的 public https url。例如:
parse-server --appId --masterKey --publicServerURL https://your.public.url/some_nodejs
有空可以看看我的configuration files
如果您使用的是 Xcode 8.0 和 swift 3.0 或 2.2
来自 Apple 文档
如果您正在开发新应用,您应该只使用 HTTPS。如果您已有应用程序,则应立即尽可能多地使用 HTTPS,并制定计划以尽快迁移应用程序的其余部分。此外,您通过更高级别的 API 进行的通信需要使用具有前向保密性的 TLS 1.2 版进行加密。如果您尝试建立不符合此要求的连接,则会抛出错误。如果您的应用需要向不安全的域发出请求,您必须在应用的 Info.plist 文件中指定此域。
绕过应用程序传输安全:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourserver.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
允许所有不安全的域
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
阅读更多:Configuring App Transport Security Exceptions in iOS 9 and OSX 10.11
如果您不是 XML 的忠实粉丝,那么只需在您的 plist 文件中添加以下标签即可。
如果您使用的是 Xcode 8.0 到 8.3.3 和 swift 2.2 到 3.0
In my case need to change in URL http:// to https:// (if not working then try)
Add an App Transport Security Setting: Dictionary.
Add a NSAppTransportSecurity: Dictionary.
Add a NSExceptionDomains: Dictionary.
Add a yourdomain.com: Dictionary. (Ex: whosebug.com)
Add Subkey named " NSIncludesSubdomains" as Boolean: YES
Add Subkey named " NSExceptionAllowsInsecureHTTPLoads" as Boolean: YES
打开您的 pList.info 作为 源代码 并在底部 </dict>
之前添加以下代码,
<!--By Passing-->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>your.domain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>1.0</string>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
<!--End Passing-->
最后用你的基础 Url 改变 your.domain.com
。谢谢
无法加载资源,因为应用程序传输安全策略要求使用在 Swift 4.03 中工作的安全连接。
打开您的 pList.info 作为源代码并粘贴:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
确保更改正确的 info.plist 文件。
这是第二次我浪费时间在这个问题上,因为我没有注意到我在改变info.plist 在 MyProjectNameUITests 下。
在Swift4中可以使用
->去Info.plist
-> 点击信息属性列表的加号
->添加 应用程序传输安全设置 作为字典
-> 单击加号图标 应用程序传输安全设置
-> 添加允许任意加载 设置YES
波纹管图像看起来像
对于那些在本地主机上开发的人,请遵循以下步骤:
- 点击
Information Property List
旁边的“+”按钮并添加App Transport Security Settings
并为其指定一个Dictionary
类型 - 点击新创建的
App Transport Security Settings
条目旁边的“+”按钮并添加Boolean
类型的NSExceptionAllowsInsecureHTTPLoads
并将其值设置为YES
。 - 右键单击
NSExceptionAllowsInsecureHTTPLoads
条目并单击 "Shift Row Right" 选项使其成为上述条目的子条目。 - 点击
NSExceptionAllowsInsecureHTTPLoads
条目旁边的“+”按钮并添加Boolean
类型的Allow Arbitrary Loads
并将其值设置为YES
注意:最终应该看起来像下图所示
这是 Apple 强制加强 API 安全性的方法(强制使用 https 而不是 http)。我将解释如何删除此安全设置。
此处的大多数答案都指出将此密钥添加到您的 info.plist
仅此一项并没有为我解决这个问题。 我不得不在里面添加相同的键
Project -> Targets -> Info -> Custom iOS Target Properties
然而,这将允许来自任何人的不安全连接发生。如果您只想允许特定域使用建立不安全的连接,您可以将以下内容添加到您的 info.plist.
如果你使用firebase,它会在NSAppTransportSecurity
部分添加NSAllowsArbitraryLoadsInWebContent = true
,而NSAllowsArbitraryLoads = true
将不起作用
在XCode 12.5。 IOS 14. 我做了以下条目
这就是 info.plist 源代码的样子
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
对于 XCode 13,添加 Allow Arbitrary Loads
并不是一件简单的工作。因为默认情况下没有名为 App Transport Security Settings
.
您必须通过按 Info/Custom iOS 目标属性下看到的任何加号按钮来了解如何添加新的根级密钥。
查看详情link: