В Apache есть известная и нерешенная проблема с заголовками Expect, см. ошибка 46709 и ошибка 47087 .
Проблема в том, что некоторые клиенты устанавливают заголовок Expect и отправляют только заголовки запроса перед PUT или POST данных.Это позволяет серверу реагировать на ошибки / перенаправления / нарушения безопасности до того, как клиент отправит тело запроса (данные PUT или POST).Это похвальная цель, но, очевидно, клиент не ждет, пока получит ответ, а просто выталкивает тело запроса, что приводит к ошибке 417.
Если у вас есть контроль над .NETклиент, вы можете использовать ServicePointManager.Expect100Continue Свойство , установленное в false, чтобы переопределить это поведение.
Если у вас есть только контроль над сервером, похоже, вы можете принудительно установить HTTP 1.0 для этих клиентов(возможно, на основе строки пользовательского агента) или принудительно удалите заголовок Expect с помощью mod_header в начале запроса.
Чтобы удалить заголовок Expect из запроса на раннем этапе с использованием mod_headers, используйте следующую директиву config:
<IfModule mod_headers.c>
RequestHeader unset Expect early
</IfModule>
Это работает, потому что клиент на самом деле не ожидает ответа «100 Continue» и действует так, как будто заголовок Expect не был установлен.