收藏
回答

微信H5支付在QQ浏览器中出现网络环境未能通过安全验证

刚开发完H5支付功能, 测试的时候发现IOS上面 Safari / Chrome / QQ 浏览器正常

安卓上面,  小米 / 华为 系统浏览器正常, 但是在安卓的全部 QQ 浏览器上都会出现

网络环境未能通过安全验证

这个错误页面, 全程测试使用的是同一个页面以及同一个网络环境, 没有任何切换操作.

并且前后一台设备上面的两个浏览器表现不一致, 可以反复重现.

应该不是代码的关系, 是因为 QQ 浏览器内部有一些不一致的地方吗?

回答关注问题邀请回答
收藏

1 个回答

  • Symo
    Symo
    2019-04-23

    找到具体问题了, 安卓平台上面的 QQ 浏览器似乎会使用一个代理转发请求, IP 一直是显示天津市.

    然而我们的支付业务在一个负载均衡后面, 同样使用了HTTP_X_FORWARDED_FOR头来获取客户端IP.

    导致最后出现的 HTTP_X_FORWARDED_FOR 里面包含了两个 IP 地址.

    而由于 symfony 的 Request 组件在获取多个 clientips 时最后会调用 array_reverse 翻转数据,

    导致明明是正确的第一个 IP 反而到了最后一个. 于是传给下单接口的其实是 QQ浏览器中的代理 IP, 而非实际客户机的IP.

    最终导致网络环境错误.


    update: 这个代理IP似乎是用于大王卡的免流功能, 并且 symfony 的逻辑其实也并没有错, 毕竟经过多次转发之后最开始的IP是可以被伪造的, 最终信任的还是与服务器通信的IP. 只不过这个和最终业务需求出现了误差..emm..


    2019-04-23
    有用 1
    回复
登录 后发表内容