Узел - express-http-proxy - установить заголовок перед проксированием - PullRequest
0 голосов
/ 27 июня 2018

Прежде чем я прокси на адрес, я хочу установить заголовок прокси (Smth как перехватчик). Я использую экспресс-http-библиотеку и экспресс с Node.JS. Пока мой код выглядит следующим образом. Btw. документы этой библиотеки не сделали меня мудрее.

app.use('/v1/*', proxy('velodrome.usefixie.com', {
userResHeaderDecorator(headers, userReq, userRes, proxyReq, proxyRes) {
    // recieves an Object of headers, returns an Object of headers.
    headers = {
        Host: 'api.clashofclans.com',
        'Proxy-Authorization': `Basic ${new Buffer('token').toString('base64')}`
    };
    console.log(headers);

    return headers;
}

}));

И хотя консоль выводит меня из заголовков obj. как и ожидалось, прокси авторизация не сработала:

{ Host: 'api.clashofclans.com',
  'Proxy-Authorization': 'Basic token' }

Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

express-http-proxy позволяет передать объект опций (тот же объект, который используется в библиотеке request) через proxyReqOptDecorator:

app.use("/proxy", proxy("https://target.io/api", {
  proxyReqOptDecorator: function (proxyReqOpts, srcReq) {
    proxyReqOpts.headers = {"Authorization": "Bearer token"};
    return proxyReqOpts;
  }
}));

или

app.use("/proxy", proxy("https://target.io/api", {
  proxyReqOptDecorator: function (proxyReqOpts, srcReq) {
    proxyReqOpts.auth = `${username}:${password}`;
    return proxyReqOpts;
  }
}));

Документацию для proxyReqOptDecorator можно найти здесь

0 голосов
/ 27 июня 2018

Если все, что вам нужно сделать, это добавить некоторое промежуточное программное обеспечение для изменения некоторых заголовков, вы можете просто сделать что-то вроде этого:

app.use('/v1/*', (req, res, next) => {
    req.headers['Proxy-Authorization'] = `Basic ${new Buffer('token').toString('base64')}`;
    next();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...