Вихревой POST - 411 необходимых длин

Проблема состоит в том, что сертификат SSL связывается с IP-адресом не имя хоста. Когда соединение наталкивается на IP-адресе на Запрос HTTPS, первое действие должно установить коммуникацию SSL путем передачи сертификата сервера и/или клиентского сертификата. Во время этого этапа квитирования соединения сервер Apache не имеет никакого способа знать то, для чего запрос, собирающийся проникать. Это отличается для HTTP (не-SSL) трафик как, после того, как соединение устанавливается, сервер Apache может определить виртуальную конфигурацию хоста, чтобы использовать, если клиент отправляет Host заголовок или иначе это передают его к первому виртуальному настроенному хосту.

Если бы у Вас было несколько виртуальных хостов под тем же доменом, то Вы могли бы установить единственный Wildcard-сертификат на IP-адресе и иметь несколько виртуальных хостов с различными определенными именами серверов; однако, если бы те имена серверов не находятся под тем же доменным именем, они генерировали бы клиент-серверные ошибки. Это работало бы, поскольку Wildcard-сертификат будет действителен для всех имен хостов под тем доменным именем. Вам был бы нужен другой IP-адрес, если бы доменные имена отличались, поскольку первый сертификат, определенный для того IP-адреса, был бы тем, представленным для соединения клиентов.

28
задан 27 September 2011 в 11:05
1 ответ

Вы правы - lighttpd не поддерживает запросы POST с пустым телом сообщения без заголовка Content-Length, установленного на ноль, и CURL отправляет такой запрос. Есть споры о том, кто прав, но, на мой взгляд, lighttpd не работает. POST без Content-Length и без Transfer-Encoding совершенно законен и не имеет тела сообщения.

Добавление -d "" заставляет CURL отправлять Content-Length: 0 , который решает проблему.

Вы можете изменить lighttp. Найдите код, который выдает ошибку 411, и вместо этого установите нулевую длину содержимого.

46
ответ дан 28 November 2019 в 20:03

Теги

Похожие вопросы