首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node-http-proxy,如何向初始请求传递新的查询参数?

node-http-proxy,如何向初始请求传递新的查询参数?
EN

Stack Overflow用户
提问于 2019-03-22 00:49:19
回答 1查看 1.9K关注 0票数 3

我试图在node-http-proxy的原始请求中添加新的查询参数,直接调整req.query不起作用:

代码语言:javascript
复制
app.all(path, function (req, res) {
    req.query.limit = 2;
    apiProxy.web(req, res, { target: target });
});

目标未收到limit参数。

我想以这种方式隐藏一个API密钥,是否可以添加新的查询参数?

EN

回答 1

Stack Overflow用户

发布于 2019-08-13 01:25:08

我猜你使用的方法是在响应之后。需要使用proxyReq事件

代码语言:javascript
复制
var httpProxy = require('http-proxy');
const url = require('url');

proxy = httpProxy.createServer({
  target:  'https://httpbin.org',
  secure: false
}).listen(8009);

proxy.on('proxyReq', function(proxyReq, req, res, options) {
  parsed = url.parse(proxyReq.path, true);
  parsed.query['limit'] = 2
  updated_path = url.format({pathname: parsed.pathname, query: parsed.query});
  proxyReq.path = updated_path
  proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
});

和结果

代码语言:javascript
复制
$ curl "http://localhost:8009/get?x=yz2"
{
  "args": {
    "limit": "2",
    "x": "yz2"
  },
  "headers": {
    "Accept": "*/*",
    "Host": "localhost",
    "User-Agent": "curl/7.54.0",
    "X-Special-Proxy-Header": "foobar"
  },
  "origin": "36.255.84.232, 36.255.84.232",
  "url": "https://localhost/get?x=yz2&limit=2"
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55285448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档