首页 > 解决方案 > 为什么节点 https 模块文档示例将 tls 选项同时传递给代理和请求选项?

问题描述

在节点https 模块 docs中,关于 https.request,显示了一个示例:

const options = {
  hostname: 'encrypted.google.com',
  port: 443,
  path: '/',
  method: 'GET',
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
options.agent = new https.Agent(options);

const req = https.request(options, (res) => {
  // ...
});

令我困惑的是,请求选项也被传递给代理对象 - 然后分配给选项对象的代理属性,以替换默认的 globalAgent 对象。

Agent 对象确实接受 tls 连接选项 -

interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions

这些确实包括“密钥”和“证书”等。

我不明白的是为什么将这些 tls 选项同时传递给请求方法和代理构造函数 - 理论上配置代理对象应该足以让请求使用 tls,还是我误解了代理的作用?老实说,我已经阅读了一些文档页面,但我仍然不清楚代理是否只是管理连接池,或者它是否也基本上“负责”发出和配置实际请求。

标签: javascriptnode.jsssltls1.2

解决方案


推荐阅读