Curl сохраняет соединения открытыми и по возможности использует существующие. Если вам нужно передать Curl заголовок Connection: keep-alive, вы можете использовать опцию командной строки -H. Keep-Alive Connection означает, что сервер не будет закрывать соединение после выполнения запроса. HTTP-клиенты могут указывать дополнительные опции постоянного соединения в отдельном HTTP-заголовке - H "Keep-Alive: [options]".
1 2 3 | curl https://reqbin.com/echo -H "Connection: keep-alive" -H "Keep-Alive: timeout=5, max=100" |
В этом примере Curl Keep-AliveConnection мы отправим запрос keep-alive на адрес example.com.
Что такое Curl?
Curl - это утилита командной строки, доступная для Linux, Windows и macOS, которая позволяет отправлять HTTP-запросы на сервер с различными параметрами и методами. Он поддерживает более 25 протоколов, включая HTTP, HTTPS, FTP, а также имеет встроенную поддержку HTTP Cookies, веб-форм, SSL, аутентификации пользователей и прокси-серверов.
Что такое заголовок соединения?
Заголовок соединения определяет, остается ли текущее TCP-соединение открытым после выполнения транзакции. Постоянные соединения позволяют отправлять несколько запросов без открытия нового соединения для каждой транзакции. По умолчанию соединения являются постоянными для клиентов HTTP/1.1. Для соединений HTTP/1.0 необходимо передать заголовок запроса "Connection: keep-alive", чтобы указать, что вы хотите установить постоянное соединение.
Синтаксис заголовка соединения Curl
Ниже приведен синтаксис отправки запроса Curl с заголовком соединения Keep-Alive:
Синтаксис заголовка соединения
1 | curl -H "Connection: keep-alive" [URL] |
Что такое заголовок Keep-Alive?
Заголовок Keep-Alive позволяет задать параметры постоянного соединения: таймаут соединения и максимальное количество запросов в одном соединении.
1 | -H "Keep-Alive: timeout=5, max=100" |
Где:
- timeout: устанавливает максимальный тайм-аут в 5 секунд
- max: устанавливает максимальное количество запросов на одно соединение, равное 100
Как сделать запрос Keep-Alive с помощью Curl?
Пример отправки запроса Curl с директивами для установления постоянного соединения и с параметрами соединения:
1 2 3 | curl https://example.com/echo -H "Connection: keep-alive" -H "Keep-Alive: timeout=5, max=100" |
Версии HTTP поддерживают постоянные соединения
В таблице показаны различия между постоянными соединениями в версиях HTTP.
Версия HTTP | Описание |
HTTP/1.0 | В HTTP/1.0 соединения не являются постоянными, пока клиент не отправит заголовок -H "Connection: keep-alive". Сервер отвечает на постоянные соединения, отправляя клиенту заголовок "Connection: keep-alive". После этого соединение будет открыто, и клиент сможет отправлять другие запросы через это же соединение. Соединения будут оставаться открытыми до тех пор, пока их не сбросит клиент или сервер. |
HTTP/1.1 | HTTP/1.1 считает все соединения постоянными, если не указано иное, и не требует дополнительных заголовков -H "Connection: keep-alive". |
HTTP/2 | HTTP/2 не допускает заголовков connection и keep-alive. Chrome и Firefox игнорируют эти заголовки в ответах HTTP/2, но Safari не будет загружать страницу с такими заголовками. |