我正在try 连接到我的.Net Maui应用程序中的http,我按照Microsoft文档(从here开始)在info.plist文件中添加了以下配置,从而禁用了Apple Transport Security(ATS):

<key>NSAppTransportSecurity</key>    
<dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

但是,当我try 使用http与API通信时,仍然收到以下错误消息:

[0:] An error occurred: '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={NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSErrorFailingURLStringKey=http://restapi.adequateshop.com/api/Tourist, NSErrorFailingURLKey=http://restapi.adequateshop.com/api/Tourist, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <27DB8D6A-2EB6-41FE-953E-6FA2BFDBEDDC>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <27DB8D6A-2EB6-41FE-953E-6FA2BFDBEDDC>.<1>, NSUnderlyingError=0x280b9b330 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}}'. Callstack: ''

你知道怎么解决这件事吗?提前谢谢您.

推荐答案

在该文档页面中指定的密钥仅适用于本地地址,如IP地址或您在Apple documentation中看到的以.local结尾的地址.

从您的错误消息看,您似乎正在try 访问常规的网址.在这种情况下,您需要的密钥是:NSAllowsArbitraryLoads,这样它就可以完全退出ATS.

您的完整条目将如下所示:

<key>NSAppTransportSecurity</key>    
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

然而,我不建议这样做.请try 使用HTTPS获取您的终结点.现在它应该不再昂贵了,这样你的用户和你都将面临风险.

如果你真的无法添加HTTPS,请try 将为你的应用程序建立的不安全连接限制在单个域中.如何做到这一点可以找到here in the Apple documentation.

基本上,您的info.plist条目现在应该如下所示:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <false/>
  <key>NSExceptionDomains</key>
  <dict>
    <key>adequateshop.com</key>
    <dict>
      <key>NSIncludesSubdomains</key>
      <true/>
      <key>NSExceptionAllowsInsecureHTTPLoads</key>
      <true/>
    </dict>
  </dict>
</dict>

但同样,我建议修复服务器,首先是安全的.

Ios相关问答推荐

更新Flutter项目时出错:CocoaPods找不到pod webview_flutter_wkwebview的兼容版本""

在金属中设置纹理的UV坐标以编程方式变形纹理

检测touch 并忽略其他手势SWIFT SceneKit

swift|在具有自定义单元格的多个TableView中没有任何内容

Flutter 应用程序中带有Firebase的GoogleService-Info.plist中缺少CLIENT_ID、REVERSED_CLIENT_ID和ANDROID_CLIENT-ID

更改订单时如何保存商品的位置?

使用 AVCaptureDeviceTypeBuiltInTripleCamera 时 Select 合适的相机进行条码扫描

expo EAS build (iOS) 在 Pod 安装步骤中失败 (SDK45 & 46)

如何在 Swift 上的 sendSynchronousRequest 中判断 Response.statusCode

如何判断 `NSManagedObject` 是否已被删除?

未找到签名证书​​iOS Distribution

Got Unrecognized selector -replacementObjectForKeyedArchiver: 在 Swift 中实现 NSCoding 时崩溃

如何从一个特定的视图控制器中隐藏导航栏

iOS 中的 Crashlytics 不会继续通过 Fabric 应用程序中的构建您的项目

如何找出用于构建 *.ipa 文件的配置文件?

如何动态计算 UILabel 高度?

正确的领域使用模式/最佳实践?

SwiftUI - 列表行中的多个按钮

SLComposeViewController 分享教程

Info.plist 实用程序错误:无法打开 Info.plist,因为没有这样的文件