我想更好地了解 .Net http 连接重用的工作原理。
当我使用 HttpWebRequest 从同一个应用程序域向某个服务器发送两次内容时,连接(可选)是否被重用?因此,即使在我的应用程序中它们是不同的逻辑请求,服务器也会将这两个请求视为来自同一个连接。
如果是,可以关闭此行为吗?
使用身份验证/ssl 的连接怎么样——它们也被重用了吗?如果我为每个请求提供不同的凭据/策略,这可能是一个安全漏洞。
我想更好地了解 .Net http 连接重用的工作原理。
当我使用 HttpWebRequest 从同一个应用程序域向某个服务器发送两次内容时,连接(可选)是否被重用?因此,即使在我的应用程序中它们是不同的逻辑请求,服务器也会将这两个请求视为来自同一个连接。
如果是,可以关闭此行为吗?
使用身份验证/ssl 的连接怎么样——它们也被重用了吗?如果我为每个请求提供不同的凭据/策略,这可能是一个安全漏洞。
连接重用是使用 HTTP Keep-alive,这是 HTTP/1.1 的一个特性。通过使用 HTTP Keep-alive,一个 TCP 连接用于顺序处理多个 HTTP 请求,因此可以节省为每个请求打开新 TCP 连接的时间。然后,每个 HTTP 请求本身都是独立的,因此不会自动重复使用身份验证和类似请求。
正如它在https://www.rfc-editor.org/rfc/rfc2616#section-8.1中所说的 RFC HTTP 标头:连接:保持活动
是 Http 1.0 使用的东西,因为连接不是持久的。
从 http 1.1 开始,默认情况下所有连接都是持久的,这意味着不再使用此标头。