Dot*_*Dev 5 proxy-server node.js express
我有以下代码。还有一个返回字符串数组的 web api,
const express = require('express');
const proxy = require('express-http-proxy');
var app = express();
app.use('/proxy', proxy('http://localhost:56660/api/values'));
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
当我尝试执行 localhost:3000/proxy 时,我没有得到响应,但是当我使用 时app.use('/proxy', proxy('www.google.com'));,它会重定向到 google 网站。
请给我建议一个最佳方法/解决方案: 我想创建一个代理服务器,它从浏览器(应用程序)获取 url,修改 url,调用新 url 并将响应发送回浏览器(应用程序)。
您可以获取要代理的 URL 作为查询参数,修改它,然后将该 URL 传递给proxy,如下所示(使用而不是app.use('/proxy', proxy('http://localhost:56660/api/values'));):
app.get('/proxy', (req, res, next) => {
const modifiedURL = modifyURL(req.query.url)
return proxy(modifiedURL)(req, res, next)
})
Run Code Online (Sandbox Code Playgroud)
您可以使用如下 URL 调用服务器(GET 方法):
https://my.server.com/proxy?url=https://urltobeproxied.com
更新:
我认为这可以根据您的需求工作:
app.use('/proxy', (req, res, next) => {
const requestedUrl = `${req.protocol}://${req.get('Host')}${req.url}`
const modifiedURL = modifyURL(requestedUrl)
proxy(modifiedURL)(req, res, next)
})
Run Code Online (Sandbox Code Playgroud)
更新2:
app.use('/proxy', proxy('http://localhost:56660/api/values', {
proxyReqPathResolver: function(req) {
const requestedUrl = `${req.protocol}://${req.get('Host')}${req.url}`
const modifiedURL = modifyURL(requestedUrl)
return require('url').parse(modifiedURL).path;
}
}))
Run Code Online (Sandbox Code Playgroud)
更新3:
代理修改响应的示例(从包文档中提取);
app.use('/proxy', proxy('http://localhost:56660/api/values', {
userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
data = JSON.parse(proxyResData.toString('utf8'));
data.newProperty = 'exciting data';
return JSON.stringify(data);
}
}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6292 次 |
| 最近记录: |