javascript - node-http-proxy,如何将新的查询参数传递给初始请求?
问题描述
我正在尝试向我的node-http-proxy中的原始请求添加新的查询参数,像这样直接调整是req.query
行不通的:
app.all(path, function (req, res) {
req.query.limit = 2;
apiProxy.web(req, res, { target: target });
});
目标未limit
收到参数。
我想以这种方式隐藏 API 密钥,是否可以添加新的查询参数?
解决方案
您使用的方法是在我猜的响应之后。需要使用proxyReq
事件
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');
});
和结果
$ 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"
}
推荐阅读
- java - 增加 jBoss 服务器的堆大小
- javascript - 显式导入与 * 登录 javascript
- git - 使用 git 提交日期作为证据
- csv - 使用 Multipart 将 CSV 文件上传到 S3 时,上传的 csv 文件具有 http 标头
- android-studio - 如何获取特定的回收器视图 ltem 类别并将其传递给新活动
- python - 无法运行 virtualenv
- python - 如何在 python 中创建自定义计时器触发的 iotedge 函数?
- rest - 对查询 consoleText 的调用返回 HttpStatus 100 - 如何处理?
- python - 使用 pip install 下载需求时出错(安装命令:use_2to3 无效。)
- inheritance - 如何使用 Jackson 反序列化 Json Schema?