如何连接到 iOS 上的非安全本地主机 websocket?

How to connect to a non-secure localhost websocket on iOS?

我有一个 Qt 应用程序,它捆绑了一个浏览器和一个在端口 50050 上托管非安全 websocket 服务器的应用程序。浏览器尝试通过 ws://127.0.0.1:50050 连接到该应用程序,这有效在 macOS 上表现良好。然而,在 iOS 上,连接失败。我怀疑这是由于 iOS 特定的安全设置所致 – 也因为允许本地网络使用的对话框未显示。请在此处找到我在 Info.plist 文件

中应用的与网络相关的安全密钥列表
<key>NSLocalNetworkUsageDescription</key>
<string>Uses local networking to communicate settings…</string>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key><true/>

<key>NSAppTransportSecurity</key>
       <dict>
                <key>NSAllowsArbitraryLoads</key><true/>
                <key>NSAllowsArbitraryLoadsForMedia</key><true/>
                <key>NSAllowsArbitraryLoadsInWebContent</key><true/>
                <key>NSAllowsLocalNetworking</key><true/>
                <key>NSExceptionDomains</key>
                <dict>
                        <key>localhost</key>
                        <dict>
                                <key>NSExceptionAllowsInsecureHTTPLoads</key><true/>
                                <key>NSIncludesSubdomains</key><true/>
                        </dict>
                        <key>mydomain.com</key>
                        <dict>
                                <key>NSExceptionAllowsInsecureHTTPLoads</key><true/>
                                <key>NSIncludesSubdomains</key><true/>
                        </dict>
                </dict>
        </dict>

我是否遗漏了任何有关安全密钥的信息,或者有人对如何解决此问题有不同的建议吗?

On iOS non-secure 在安全网站 (https) 的上下文中不允许使用 websockets(既不是本地主机)。在 OSX 上,除了 Safari 之外的任何浏览器都允许使用它。解决方案是使用 non-secure 网站 (http) 或在需要 https 时在本地主机上创建安全的 websocket。