Недопустимый http-запрос (слишком длинный заголовок запроса) в CLM
Эта статья поможет устранить проблему, из-за которой на портале CLM возникает ошибка неправильного запроса http.
Оригинальная версия продукта: службы IIS
Исходный номер базы знаний: 955585
Симптомы
Вы не можете выполнить все операции на портале CLM. Может возникнуть следующая проблема:
Если в интернет-Обозреватель включены понятные сообщения об ошибках HTTP, ошибки HTTP 400 будут возвращены в ответ на веб-запросы, отправляемые на сервер служб IIS.
Если в Интернет-Обозреватель отключены понятные сообщения об ошибках HTTP, пользователю возвращается следующее сообщение об ошибке:
Недопустимый запрос (слишком длинный заголовок запроса)
Причина
HTTP-запрос, отправляемый на сервер IIS, имеет заголовок запроса, превышающий допустимую длину заголовка запроса, настроенную на сервере IIS. В частности, заголовок Authorization содержит большой билет проверки подлинности Kerberos. Билет Kerberos очень велик, так как пользователь является членом многих групп в Active Directory.
В целях безопасности компонент HTTP.sys на сервере IIS отклоняет входящий HTTP-запрос, так как он превышает настроенные ограничения по размеру.
Разрешение
Настройте разделы MaxFieldLength
реестра HTTP и MaxRequestBytes
на сервере IIS, чтобы разрешить большие размеры заголовков запросов.
Важно!
Изменение этих разделов реестра считается чрезвычайно опасным. Увеличение значений этих ключей приведет к тому, что HTTP.sys будет использовать больше памяти и может повысить уязвимость к вредоносным атакам. Если изменение этих ключей является единственным вариантом, не устанавливайте их значения больше, чем они должны быть. Сведения об определении размера заголовков запросов и, следовательно, о том, какое значение следует задать для разделов реестра, см. далее в этой статье.
Дополнительные сведения о разделах реестра HTTP.sys для IIS см. в разделе параметры реестраHttp.sys для IIS.
Дополнительные сведения о HTTP.sys ведения журнала ошибок см. в разделе Ведение журнала ошибок в API-интерфейсах HTTP.
Определение размера HTTP-запроса
Чтобы определить фактический размер HTTP-запроса, может быть полезно использовать трассировку сетевого монитора. С помощью этой трассировки можно вычислить размер HTTP-запроса и сравнить его с параметром на сервере IIS.
Кроме того, полезно обратиться к журналу ошибок HTTP.sys.
Расположение: %windir%\system32\logfiles\HTTPERR\httperrX.log
Ключ к решению этой конкретной проблемы заключается в том, чтобы показать, что CLM пытается отправить HTTP-запрос на сервер, который больше значения по умолчанию 16 кб или больше настраиваемого параметра в их MaxFieldLength
и MaxRequestBytes
. Для этого используйте сочетание:
- Трассировка сетевого монитора
- Просмотр журнала ошибок http.sys, расположенного в
%windir%\system32\logfiles\HTTPERR\httperrX.log
.
Пример записи из httperrX.log:
date time c-ip c-port s-ip s-port cs-version cs-method cs-uri sc-status s-siteid s-reason s-queuename 2007-04-12 07:37:51 10.201.25.27 1682 10.248.10.65 80 HTTP/1.1 GET /clm 400 — RequestLength
Wireshark
- Найдите кадр, который отправляет инструкцию HTTP
Get
- Просмотрите вкладку в правом нижнем углу экрана WireShark с заголовком Reassembled TCP , и номер рядом с этим номером будет иметь размер повторно собираемого HTTP-запроса.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по