从某些请求中绕过 nodejs express-http-proxy
bypass nodejs express-http-proxy from some requests
我有一个用于将请求重定向到另一台服务器的 express-http-proxy。我只想重定向一些请求,下面是重定向的请求代码;
app.use('/api', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
return require('url').parse(req.url).path;
}}));
我试过了
app.use('/', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
return require('url').parse(req.url).path;
}}));
在绕过任何其他请求的第一个块之后,但我发现代理不断转发任何请求。有没有办法绕过代理并调用同一主机上的一些 HTML 文件?
https://github.com/villadora/express-http-proxy
过滤器(支持承诺)
过滤器选项可用于限制代理的请求。 Returntrue继续执行代理; return false-y 跳过此请求的代理。
app.use('/proxy', proxy('www.google.com', {
filter: function(req, res) {
return req.url === 'http://www.urltobeproxied.com';
}
}));
您还可以截取您选择的 return 数据
app.use('/proxy', proxy('www.google.com', {
userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
data = JSON.parse(proxyResData.toString('utf8'));
data.newProperty = 'exciting data';
return JSON.stringify(data);
}
}));
我找到了如下解决方案;
我必须先声明一个静态路径来表达,所有的路径内容都是public。之后我做了重定向。
app.use('/api', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
return require('url').parse(req.url).path;
}
}));
app.use(express.static("./web"));
app.get('/',function(req,res){
res.sendFile(require('path').join(__dirname, ''));
});
我有一个用于将请求重定向到另一台服务器的 express-http-proxy。我只想重定向一些请求,下面是重定向的请求代码;
app.use('/api', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
return require('url').parse(req.url).path;
}}));
我试过了
app.use('/', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
return require('url').parse(req.url).path;
}}));
在绕过任何其他请求的第一个块之后,但我发现代理不断转发任何请求。有没有办法绕过代理并调用同一主机上的一些 HTML 文件?
https://github.com/villadora/express-http-proxy
过滤器(支持承诺) 过滤器选项可用于限制代理的请求。 Returntrue继续执行代理; return false-y 跳过此请求的代理。
app.use('/proxy', proxy('www.google.com', {
filter: function(req, res) {
return req.url === 'http://www.urltobeproxied.com';
}
}));
您还可以截取您选择的 return 数据
app.use('/proxy', proxy('www.google.com', {
userResDecorator: function(proxyRes, proxyResData, userReq, userRes) {
data = JSON.parse(proxyResData.toString('utf8'));
data.newProperty = 'exciting data';
return JSON.stringify(data);
}
}));
我找到了如下解决方案; 我必须先声明一个静态路径来表达,所有的路径内容都是public。之后我做了重定向。
app.use('/api', proxy('abc.com', {
// preserveHostHdr: true,
https: isHttps,
proxyReqPathResolver: function (req) {
return require('url').parse(req.url).path;
}
}));
app.use(express.static("./web"));
app.get('/',function(req,res){
res.sendFile(require('path').join(__dirname, ''));
});