обойти nodejs express-http-proxy из некоторых запросов - PullRequest
0 голосов
/ 26 июня 2019

У меня есть экспресс-http-прокси, используемый для перенаправления запроса на другой сервер.Я хотел бы перенаправить только некоторые запросы, здесь ниже приведен код перенаправленных запросов;

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 на одном хосте?

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Я нашел решение, как показано ниже; Сначала я должен объявить статический путь для выражения, и все содержимое пути будет общедоступным. после этого я сделал перенаправление.

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, ''));
  });
0 голосов
/ 26 июня 2019

https://github.com/villadora/express-http-proxy

фильтр (поддерживает обещания) Параметр фильтра может использоваться для ограничения прокси-запросов. Верните 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);
  }
}));
...