如何解决通过express.js代理请求
我遇到了一个棘手的问题,我将尽力清楚地解释它。
我的某些应用程序都依赖一个api-这是一个简单的get-request,它返回一个png,而get-request的形式为http://fakeapi.com?img=<name_of_image>
。一般来说,此api是免费提供的,不需要身份验证-只需执行get请求(或将其放入html中src
的{{1}}中),它就可以正常工作。
因此,我有一个中央服务器,我们称其为Z -我可以在中央服务器上正常使用此api。在此中央服务器上,我还运行了一个node.js express应用。
我有四台使用该应用程序的计算机,它们可以连接到中央服务器-A,B,C和D。现在A和B可以使用<img>
API来很好地呈现图像,并且效果很好
C和D似乎具有fakeapi
api列入黑名单的IP地址。我们进行了一些研究,发现他们禁止了许多IP,因为它们提出了太多的请求或其他内容-我们没有这样做,有人做了,我们只是陷入了交火之中,而只是在C和D。我们已经确认这绝对是IP问题,因为它在我们使用VPN时可以使用,但我们不想一直使用VPN。
所以我有一个绝妙的主意,我实际上可以使用Z上的节点服务器代理来自C和D的请求。
fakeapi
我已经在计算机Z的node.js Express服务器上获得了该代码,并且当我从A和B请求app.get('/fakeapi',function(req,res) {
//modify the url in any way you want
const params = url.parse(req.originalUrl).search
const newurl = 'http://fakeapi.com' + params;
request(newurl).pipe(res);
});
时,它可以工作。但是,它不仅起作用-当我在浏览器中进行操作时,它实际上将URL更改为http://Z/fakeapi?img=<name_of_image>
,这是我没想到的。
因此,当我从计算机C和D请求http://fakeapi.com?img=<name_of_image>
时,它实际上与使用此代理路由之前存在相同的问题-尽管我试图使Z代理成为我的请求,但它仍然被IP阻止。我真的不明白为什么,或者我该怎么做才能正确地代理请求,以便我可以将图像从fakeapi获取到C和D。
关于如何正确代理此请求的任何想法,这样就不会出现IP阻止问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。