如何在 http 代理后面运行 iPadOS firebase 应用程序?

问题描述 投票:0回答:1

我的一个客户想要在代理后面使用我们的 iPadOS 应用程序。虽然与 Firebase 的所有正常连接均有效,但对 Firestore 的所有订阅均无效。客户反映,他们可以在防火墙中看到一些连接绕过http代理(WinGate),直接使用tcp,然后被防火墙阻止。与代理的连接在 iPad 设置中配置。

所以我的问题是,是否可以通过http代理进行订阅,或者直接使用http,这应该已经强制它通过代理。有趣的是,我们的应用程序的网络版本使用相同的 firebase 后端,可以正常工作。非常感谢任何指点!

相关问题

firebase google-cloud-firestore grpc http-proxy
1个回答
0
投票

我能够通过以下步骤重现该问题:

  1. 在 iOS 上使用以太网连接配置代理。
  2. 手动配置错误的网关
  3. 禁用 IPv6 DNS 条目
  4. 禁用 Wi-Fi

这样,所有流量都必须经过代理。可以通过直接在防火墙中阻止 iPad IP 来实现类似的设置。

通过此设置,我无法使任何 Firestore 订阅正常工作。

但是,当将以下代码添加到AppDelegate时

if let proxySettingsUnmanaged = CFNetworkCopySystemProxySettings() {
    let proxySettings = proxySettingsUnmanaged.takeRetainedValue()
    if let ip = (proxySettings as NSDictionary)["HTTPSProxy"] as? String,
        let port = (proxySettings as NSDictionary)["HTTPSPort"] as? Int {
        setenv("grpc_proxy", "http://\(ip):\(port)", 1)
    }
}

连接再次正常工作。我从

grpc 参考
中获得了环境变量grpc_proxy的参考。

© www.soinside.com 2019 - 2024. All rights reserved.