Повторное использование http-соединения
Я хотел бы лучше понять, как работает повторное использование http.Net.
Когда я использую HttpWebRequest для двойной отправки чего-либо на один и тот же сервер дважды с одного и того же домена приложения, используется ли соединение (необязательно) повторно? Таким образом, сервер будет видеть оба запроса как исходящие от одного и того же соединения, хотя в моем приложении это разные логические запросы.
Если да, можно ли отключить это поведение?
А как насчет соединений, которые используют аутентификацию / ssl - они также также используются повторно? Если я предоставляю разные учетные данные / политику для каждого запроса, это может быть дырой в безопасности.
2 ответа
Повторное использование соединения использует HTTP Keep-alive, который является функцией HTTP/1.1. Используя HTTP Keep-alive, одно TCP-соединение используется для последовательной обработки нескольких HTTP-запросов, поэтому вы экономите время на открытие нового TCP-соединения для каждого запроса. Каждый HTTP-запрос сам по себе снова становится независимым, поэтому аутентификация и аналогичные параметры не будут автоматически использоваться повторно.
Как говорится в RFC в http://tools.ietf.org/html/rfc2616 Заголовок HTTP: Connection: Keep-Alive
это то, что используется в HTTP 1.0, потому что соединение не было постоянным.
с http 1.1 все соединения по умолчанию являются постоянными, что означает, что этот заголовок больше не используется.