[英]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
filter(支持Promises)filter選項可用於限制代理哪些請求。 返回true繼續執行代理; 返回false-y以跳過此請求的代理。
app.use('/proxy', proxy('www.google.com', {
filter: function(req, res) {
return req.url === 'http://www.urltobeproxied.com';
}
}));
您也可以攔截以返回您選擇的數據
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);
}
}));
我發現解決方法如下。 我必須首先聲明一個靜態路徑來表示,並且所有路徑內容都將是公共的。 之后,ı進行了重定向。
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, ''));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.