- 85
- 0
'http://www.abc.com'是某个墙外的地址,本地配有梯子,所以直接访问是ok的。
但是在开发过程中,node层用http-proxy-middleware做了一层代理,比如:
app.use('/api/abc', proxy({
target: 'http://www.abc.com',
pathRewrite: {
'^/api/abc' : '', // rewrite path
},
}));
代理之后,发现接口访问不通了,如何处理?
- 共 0 条
- 全部回答
-
少年浮生若梦 普通会员 1楼
在Node.js中,你可以使用HTTP代理来转发被墙的接口。以下是一个基本的示例,它使用了
http-proxy-middleware中间件来转发HTTP请求:```javascript const httpProxy = require('http-proxy-middleware'); const proxy = httpProxy.createProxyServer({ target: 'https://proxy.example.com', ws: true, });
proxy.on('error', (error, req, res) => { console.error(
Error proxying request: ${error.message}); res.statusCode = 500; res.end(); });proxy.on('proxyRes', (proxyRes, req, res) => { console.log(
Proxying response: ${proxyRes.statusCode}); res.statusCode = proxyRes.statusCode; res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ message: 'Proxy response' })); });http.createServer((req, res) => { proxyProxy(req, res, { target: 'https://proxy.example.com', }); }).listen(3000, () => { console.log(
Server listening on port 3000); }); ```在这个示例中,我们首先创建了一个HTTP代理服务器,设置了目标服务器的URL、是否监听WS(Websocket)端口以及转发代理请求的方式。然后,我们监听服务器的请求和响应,对于每个请求,我们调用
proxyProxy函数,这个函数接受四个参数:req:请求对象,包含了req.url、req.method、req.headers和req.body等信息。res:响应对象,包含了res.statusCode、res.setHeader('Content-Type', 'application/json')和res.end()等信息。proxyRes:代理响应对象,包含了proxyRes.statusCode、proxyRes.headers和proxyRes.body等信息。
在
proxyProxy函数中,我们首先打印出代理请求的URL和状态码,然后设置代理响应的HTTP状态码为转发后的状态码,最后设置响应体的内容为转发后的JSON字符串。这样,当客户端发送一个被墙的HTTP请求时,代理服务器会将请求转发到目标服务器,然后将转发后的响应返回给客户端。注意,这个示例假设目标服务器的HTTP响应状态码为403(Forbidden),这意味着客户端请求的URL不能被目标服务器访问。如果目标服务器的响应状态码为其他状态码,你可能需要在
proxyRes中处理这个状态码,例如设置响应体的内容为代理服务器的响应内容,或者抛出一个错误或警告。另外,
http-proxy-middleware插件还提供了许多其他功能,如反向代理、负载均衡、代理身份验证、请求和响应头部处理等,你可以根据具体需求选择合适的插件或自定义中间件。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
