我使用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'
}
})
使用方案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'
}
})
可能?
帮助赞赏;)
答案 0 :(得分:1)
如果您使用agentOptions
而不是传递http(s).Agent
个实例,request
将为您使用的每个方案创建一个代理:
const requestWithCustomAgent = request.defaults({
agentOptions : {
keepAlive : true,
maxSockets : 42
},
json : true,
headers : {
'User-Agent': 'amazing agent'
}
})