最近有客户反馈,之前为他们提供的订单审批以后同步订单状态到第三方系统的接口,有时候会不执行。
开发环境和测试环境做了多次验证,问题也没得到重现。
后来操作者再次操作失败发现问题的时候,我再进入系统操作,竟然依旧是成功的。经过对比,发现操作人是在公司外网进行的操作,操作失败时,NC前台日志显示的是请求超时,而我是在公司内网操作成功的。客户的服务器和第三方系统都在公司内网部署,同时对外开放的外网地址是同一个IP,公司内部无法通过外网访问内网地址,内网的两台服务器之间访问无障碍。我怀疑是不是因为接口代码是写在按钮的拦截器里面,接口调用部分全部是在前端执行,请求不是通过服务器的内网发出,直接是在客户端发出的呢?
后来修改拦截器代码,在拦截器里面调用NC接口,接口调用在服务器后台执行,外网操作接口调用成功。