javascript - 为什么节点 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,还是我误解了代理的作用?老实说,我已经阅读了一些文档页面,但我仍然不清楚代理是否只是管理连接池,或者它是否也基本上“负责”发出和配置实际请求。
解决方案
推荐阅读
- java - 使用 Java Media Framework (JMF) 从 BufferedImages 数组创建视频
- php - 无法在具有自创主题的 WP BACKEND 中显示 *past* 或 *all* 事件列表(事件管理器插件)
- django - DataError('对于 Heroku 上的类型字符变化(40)的值太长但不是在开发中
- javascript - Sqlite外键不匹配sequelize迁移
- apache-kafka - 反应式 Kafka 项目中的多个 Kafka 配置
- powershell - 用于将用户添加到 Active Directory 中的不同域的 PowerShell 脚本
- javascript - 如何为我的 .jshintrc 文件设置自定义位置/路径?
- php - 使用通配符将两个文件删除函数合二为一 - PHP
- python - 仅当命令来自带有 discord.py 的某个用户 ID 时才回复命令
- statistics - 从 PDF 中查找 CDF