前端通过Ajax发送请求与后端通过HttpClient发送请求的区别

时间:2021-11-16 19:09:58

    在前端通过ajax发送请求和后端使用HttpClient发送请求看似没有什么区别,因为两者发送的都是HTTP请求或者HTTPS请求,而使用HttpClient发送的请求本身也是在模拟浏览器的行为,但有时通过前端发送ajax请求第三方平台的接口可行,但是通过HttpClient的方式却不行,为什么呢?

    原因在于:通过ajax发送的请求是前端发送的请求,其请求的ip是浏览器所在机器的局域网分配的;而使用HttpClient发送的请求是后端请求,其请求的ip是提供服务的服务器的ip。一般而言,第三方平台的服务器都会有白名单的访问限制,在开发的时候添加的白名单一般是公司局域网的白名单,也就是说只有通过公司的局域网才能访问第三方的服务接口,所以在开发环境下通过ajax或者HttpClient的方式都是可行的,因为开发环境下的服务器一般连接的是公司的内网;但是到了生产环境使用HttpClient的方式就不行了,因为大部分公司的生产服务器都是租赁的,其ip并不是通过公司的局域网分配的,而是由服务器提供商分配的,这时第三方平台的白名单就会限制生产服务器的访问。

    解决方案:

        1、将HttpClient改为ajax的方式请求

        2、将生产的ip和端口加入白名单