我正在使用request.defaults(..)
- 除其他外 - 为我的请求设置自定义http代理(设置maxSockets
和keepAlive
(。
const agent = new http.Agent({
keepAlive: true,
maxSockets: 42
})
const requestWithCustomAgent = request.defaults({
agent,
json: true,
headers: {
'User-Agent': 'amazing agent'
}
})
使用方案访问 URL 时https
此错误与Error: Protocol "https:" not supported. Expected "http:"
.反之亦然,对于https.Agent
和方案http
。
有没有办法"告诉"请求以处理一个代理http
请求,https
另一个代理?
人们可以投入一些独角兽的血液并施展黑魔法,例如:
if(url.startsWith('https') {/* use on agent */} else { /* use the other */}
但这感觉很黑客。
是这样的:
const requestWithCustomAgent = request.defaults({
agents: {
'http': httpAgent,
'https': httpsAgent
},
json: true,
headers: {
'User-Agent': 'amazing agent'
}
})
可能?
帮助赞赏;)
如果您使用agentOptions
而不是传递http(s).Agent
实例,request
将为使用的每个方案创建一个代理:
const requestWithCustomAgent = request.defaults({
agentOptions : {
keepAlive : true,
maxSockets : 42
},
json : true,
headers : {
'User-Agent': 'amazing agent'
}
})