在iOS上启用明文本地流量在.NET MAUI中不起作用

0kjbasz6  于 2023-06-07  发布在  iOS
关注(0)|答案(1)|浏览(205)

我试图在我的.net MAUI应用程序中连接到http,并且我通过在info.plist文件中添加以下配置来禁用Apple Transport Security(ATS),如下所示Microsoft文档(来自here):

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

然而,当我尝试使用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: ''

有办法解决吗?先谢谢你。

aor9mmx1

aor9mmx11#

在该文档页面中指定的密钥仅适用于本地地址,如IP地址或以.local结尾的地址,如您在Apple documentation中看到的。
从您的错误信息来看,您似乎正在尝试访问一个普通的网址。在这种情况下,你需要的密钥是:NSAllowsArbitraryLoads,以便它完全退出ATS。
您的完整条目将如下所示:

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

但是,我不会建议这样做。请尝试在HTTPS上获取您的端点。现在它不应该再昂贵了,这样你的用户和你都将处于危险之中。
如果您确实无法添加HTTPS,请尝试将为您的应用建立的不安全连接限制在单个域。如何做到这一点,可以在Apple文档中找到。
基本上,您的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>

但再次,我会建议修复服务器首先是安全的。

相关问题