Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 避免Xcode'中的SSL错误;s预览窗口_Swift_Xcode_Swiftui_Ssl Certificate - Fatal编程技术网

Swift 避免Xcode'中的SSL错误;s预览窗口

Swift 避免Xcode'中的SSL错误;s预览窗口,swift,xcode,swiftui,ssl-certificate,Swift,Xcode,Swiftui,Ssl Certificate,我对Swift/SwiftUI编程非常陌生,所以我使用了一个URLImage包,我想在其中显示本地计算机上的图像。图像将具有以下路径: 让我自签名证书工作的最简单方法是创建CA根证书,并将其安装在Xcode内的模拟器上,并启用完全信任。我花了半天的时间来正确配置证书,但最终当我开始在模拟器中调试时,我的代码可以正常工作 struct SListItem: View { var solImage: String { get { return &qu

我对Swift/SwiftUI编程非常陌生,所以我使用了一个URLImage包,我想在其中显示本地计算机上的图像。图像将具有以下路径: 让我自签名证书工作的最简单方法是创建CA根证书,并将其安装在Xcode内的模拟器上,并启用完全信任。我花了半天的时间来正确配置证书,但最终当我开始在模拟器中调试时,我的代码可以正常工作

struct SListItem: View {

    var solImage: String {
        get {
            return "https://myserver.local/path/image1.jpg"
        }
    }
    
    var body: some View {
        HStack {
            URLImage(
                url: URL(string: solImage)!,
                options: URLImageOptions(
                    cachePolicy: .returnCacheElseLoad(cacheDelay: 0.0, downloadDelay: 0.25),
                    load: [.loadImmediately, .cancelOnDisappear],
                    maxPixelSize: CGSize(width: 3000, height: 3000)
                ),
                empty: {
                    Text("Nothing here")            // This view is displayed before download starts
                },
                 inProgress: { progress -> Text in  // Display progress
                        return Text("Loading...")
                },
                 failure: { error, retry in         // Display error and retry button
                    VStack {
                        Text(error.localizedDescription)
                        Button("Retry", action: retry)
                    }
                },
                content: { $0.resizable().aspectRatio(contentMode: .fit) }
            ).frame(width: 50, height: 50)
            
            Text("Test123")
        }
    }
}
但在预览/实时预览期间,这会导致以下错误: 发生SSL错误,无法与服务器建立安全连接。

但是,以下所有情况都是正确的:

  • 我可以在我的macOS主机上的Chrome、Safari中访问映像,而不存在SSL问题(CA证书安装在系统密钥链中,对所有用户都是可信的;web服务器具有由我的CA证书签名的SSL证书)
  • 我可以从模拟器上的Safari访问映像,而不会出现SSL错误(在安装CA证书并完全信任之后)
  • 如上所述,当我从Xcode在模拟器中以调试模式运行应用程序时,我可以访问该映像,而不会出现SSL错误
  • 如果我在具有第三方签名SSL证书的网站上选择了一个图像,那么该图像将在模拟器和预览窗格中正确显示
这让我相信Xcode的预览窗格使用了其他一些存储库,我需要在其中放置我的CA证书才能使其正常工作。如果存在这样的选择

我使用iPhone 11 Pro Max作为预览方案/模拟器,选择了iOS部署目标14.3


提前感谢您的帮助。

下一步应该帮助我,我担心有人会建议;)我看过一些关于使用NSAppTransportSecurity和玩URLSession的文章,但我暂时不考虑它们,因为我对Apple/Swift环境的了解太有限(我在Windows上写过C/C++,但从未在Mac上写过Objective-C)-我只希望有一种更简单的方法。但是如果没有的话,我将不得不大量阅读。谢谢。下一步应该会有帮助。我担心有人会建议;)我看过一些关于使用NSAppTransportSecurity和玩URLSession的文章,但我暂时不考虑它们,因为我对Apple/Swift环境的了解太有限(我在Windows上写过C/C++,但从未在Mac上写过Objective-C)-我只希望有一种更简单的方法。但是如果没有的话,我将不得不大量阅读。谢谢