能否通过代理将Firebase SDK的HTTPS请求重定向到本地测试模拟器?
问题解答
1. 可以搭建代理实现请求重定向
你当前已经通过HTTPS_PROXY让Firebase Go SDK走代理发起请求,这个方案完全可以扩展实现你要的转发逻辑,只需要搭建一个带中间人(MITM)解密能力的代理服务即可:
- 代理服务可以识别请求目标,当检测到请求是发往
https://oauth2.googleapis.com/token时,直接将请求转发到你本地的测试模拟器/token接口 - 其他非目标请求可以按原有逻辑正常透传,不会影响SDK其他功能的运行
2. HTTPS协议相关问题解答
会不会导致方案出错?
默认配置下会遇到证书校验失败的问题:
- 因为HTTPS请求的加密机制,代理要解密请求内容做路径匹配、转发,需要替换原
oauth2.googleapis.com的证书,Go语言的HTTP客户端默认会校验服务端证书的有效性,会直接报错拒绝请求。 - 解决方案有两种,仅推荐在测试环境使用:
- 将代理服务使用的自签根证书添加到Go程序的信任根证书池中
- 启动测试进程时设置环境变量
GODEBUG=tlsinsecureskipverify=1,临时跳过TLS证书校验
能不能在转发后转为HTTP协议访问本地模拟器?
完全可以。代理解密客户端的HTTPS请求拿到明文请求内容后,向后端模拟器发起请求的协议可以自由选择,你完全可以用HTTP协议请求本地的模拟器接口,这个转换过程对上游的Firebase SDK完全透明,SDK不会感知到任何变化。
最简实践提示:你不需要完全自己从零实现MITM代理,用Go的相关HTTP代理封装库,不到100行代码就能实现上述逻辑,测试时只需要给运行进程配置
HTTPS_PROXY指向你的代理监听地址即可。
内容的提问来源于stack exchange,提问作者Pavel
相关产品推荐
相关产品推荐

