gpt4 book ai didi

javascript - 使用 ExpressJS 的请求模块在所有传出的 http 请求中添加 header ,可能吗?

转载 作者:行者123 更新时间:2023-12-03 06:50:01 25 4
gpt4 key购买 nike

我正在使用 NodeJS 的 request 模块。

我想知道,而不是像文档一样在每个请求中手动添加 header 。

例如。

var options = {
url: myuRL,
headers: {
'myHeader': 'headerVal'
}
}

request(options ,callback);

是否可以使用中间件或其他东西在所有请求中注入(inject) header ?

我尝试创建这个中间件:

const addHeaders = function (req, res, next) {
req.header('myHeader', 'MyVal');
next();
};
module.exports = addHeaders;

它适用于所有 http 请求,除了使用 request 模块创建的请求。

注意:我的意思是对我所有人传出请求,而不是传入请求。

最佳答案

来自https://www.npmjs.com/package/request#convenience-methods :

request.defaults(选项)此方法返回一个围绕普通请求 API 的包装器,该包装器默认为您传递给它的任何选项。

//requests using baseRequest() will set the 'x-token' header 
var baseRequest = request.defaults({
headers: {'x-token': 'my-token'}
})

您可以将请求模块包装在自己的模块中,以防止每次都重新定义 header ,例如创建 myRequest.js

var request = require('request');
var myRequest = request.defaults({
headers: {'x-token': 'my-token'}
})
module.exports = exports = myRequest;

[编辑]工作示例:

myRequest.js

const request = require('request');
const myRequest = request.defaults({
headers: {'x-token': 'my-token'}
});
module.exports = exports = myRequest;

index.js

const myRequest = require('./myRequest.js');
const options = {
url: 'https://google.com'
};
myRequest(options, (err, res, body) => {
if (err) {
console.error(err);
}
else {
console.log(res.req._headers);
}
});

运行index.js:

$ node ./index.js
{ 'x-token': 'my-token',
referer: 'https://google.com/',
host: 'www.google.com' }

我已将示例推送到 https://github.com/agoldis/stackoverflow_37549654

关于javascript - 使用 ExpressJS 的请求模块在所有传出的 http 请求中添加 header ,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37549213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com