我的标题可能过于具体 - 我在制定问题时遇到了问题,因为我没有处理过很多网络管理,尤其是 SSL/HTTPS。换句话说,就是对“你为什么还没有完成……”的回答。就像是,“我不太了解……”
我正在测试,被测系统 (SUT) 是一个使用 https://graph.facebook.com 调用 Facebook API 的 Web 服务.
我在远程机器上设置了一个测试服务器,它将向 http://graph.facebook.com 提供页面.我可以使用 SUT 服务器上的主机文件将请求重定向到 http://graph.facebook.com到测试服务器。当我输入时这很好用:
curl http://graph.facebook.com
测试服务器接收到请求,并返回预期的页面。
但是,如前所述,SUT 没有使用 HTTP 站点,而是使用 Facebook API 的 HTTPS 站点(自然)。有什么方法可以拦截传出请求并将其重定向到我在其他站点上运行的 HTTP 服务吗?我希望能够输入:
curl https://graph.facebook.com
并将其重定向到我在测试服务器上运行的虚假 Facebook 服务。我可以在两端配置服务器。
如果这非常困难,我可能还想提出一个功能请求,以便能够更改 Facebook API 请求的 URL。但是,我认为开发人员使用的是预先存在的 Facebook API 模块,这可能不是直截了当的。 (好吧,我很好奇并检查了......一项快速调查表明该 API 支持处理实际 HTTPS 请求的代码的数据注入(inject),因此他必须实现他自己的接口(interface)版本以便他可以传入我可以从代码外部设置的可配置 URL - 但除非真的有必要,否则我还是不想分散他的注意力)。
我正在使用 asis-server在端口 80 上伪造 Facebook 响应(如果相关)。
最佳答案
我们最终使用的解决方案是测试服务器上的一项服务,该服务拦截 HTTPS 请求并将它们重定向到 HTTP 服务。我们的操作人员使用了 nginx为此。
我们仍然不确定这是否可以作为 SUT 的模拟 - 这取决于 SUT 是在验证证书信息还是忽略它。我可能仍然需要要求开发人员实现一个功能来支持模拟。
关于web-services - 将传出的 HTTPS 请求重定向到 HTTP 虚假服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13128583/