node.js - Node - express-http-proxy - 在代理之前设置 header

标签 node.js http express proxy

在我代理到一个地址之前,我想设置代理的 header (Smth 就像一个拦截器)。我使用 express-http-library 并使用 Node.JS 进行表达。到目前为止,我的代码如下所示。顺便提一句。这个库的文档并没有让我变得更聪明。

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' }

谁能帮帮我?

最佳答案

express-http-proxy 允许您通过 proxyReqOptDecorator 传入选项对象(与 request 库中使用的对象相同):

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 的文档here

关于node.js - Node - express-http-proxy - 在代理之前设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068167/

相关文章:

javascript - 在 Angular 中等待 http 请求

express - 如何在 Express 中将所有请求作为过滤上下文处理?

ios - 让用户在社交网络应用程序中保持同步?

node.js - 为什么 MEAN stack 建议后端 Express 代码使用 MVC 目录结构?

javascript - 使用 AngularJS 创建输入后专注于输入

node.js - 无法将nodejs应用程序部署到heroku和openshift

javascript - Node.js Express 中的 HTTP GET 请求

javascript - 如何更改 package.json 输出位置

html - HTTP POST 方法是否将数据作为 QueryString 发送?

rest - Google 电子表格 REST API v4 上的 "PERMISSION_DENIED"