gpt4 book ai didi

node.js - https.Agent 在 Node 中的作用是什么?

转载 作者:行者123 更新时间:2023-12-03 12:18:28 26 4
gpt4 key购买 nike

在 Node https module 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) => {
// ...
});
这个例子在我看来有点模棱两可,我问过 SO question regarding this ambiguity并在评论后重申了奇怪的措辞, opened an issue for this .
无论如何,我仍然试图了解代理在这种情况下所扮演的角色,因为 https.Agent 模块确实接受 TLS 连接选项:
interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions
https.Agent 的定义对象是:

An Agent object for HTTPS similar to http.Agent.


http.Agent 的定义对象是:

An Agent is responsible for managing connection persistence and reuse for HTTP clients.


据此,我了解代理“负责”管理连接 - 显然,https.Agent 存在于“普通”http.Agent 之上的事实意味着它“负责”管理连接HTTPS 连接 - 因此它可能会收到 TLS 配置选项。
我的问题是——这是否意味着在这种情况下代理有额外的责任来配置请求的网络安全?如果这是真的,这是一个奇怪的 API - 我本来希望在 https.request 的单独 key 上看到网络连接配置(如上面片段后面的示例所示)。为什么要为另一个职责重载同一个对象?真的,为什么有一个 https.Agent 呢? http.Agent 应该控制连接池和保持连接事件,而另一层应该控制配置实际请求。 https.Agent 对象对我来说似乎没有明确定义。

最佳答案

实际上是HTTPS doc指向一些好的资源,它还包含指向HTTPS module source code 的链接,这揭示了很多。但要回答你的问题:

does this mean that the Agent in this case has an added responsibility of configuring the network security of the requests


是的,您的 HTTPS 代理可以执行自定义安全功能,甚至可以使用外部 HTTPS 实现,但是对于内置的 https.Agent,使用 native TLS 模块,并且您传递给构造函数的选项是 ultimately passed to tls.connect ,允许您配置自定义 TLS 选项。

Why overload the same object for another responsibility? Really, why have an https.Agent at all?


因为 HTTPS 在 TLS 上运行。其实 https.Agent内部调用和构造 http.Agent .如果您搜索 getName in https.Agent,则额外的位主要是通过 TCP“套接字”使用 SSL“ session ”。来源并将其与 http.Agent's 进行比较,您会发现 SSL session 缓存基于更多字段,例如 DHparams、客户端证书等,这些对于 HTTP 来说根本不存在。

关于node.js - https.Agent 在 Node 中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64117101/

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