Solicitud http mala (encabezado de solicitud demasiado largo) en CLM
Este artículo le ayuda a resolver el problema en el que se produce un error de solicitud mala del Protocolo de transferencia de hipertexto (HTTP) en el portal clm.
Versión del producto original: Internet Information Services
Número KB original: 955585
Síntomas
No puede realizar todas las operaciones en el portal de CLM, puede experimentar el siguiente problema:
Con los mensajes de error HTTP descriptivos habilitados en Internet Explorer, los errores HTTP 400 se devolverán en respuesta a las solicitudes web que se envían al servidor Internet Information Services (IIS).
Con los mensajes de error HTTP descriptivos deshabilitados en Internet Explorer, se devuelve al usuario el siguiente mensaje de error:
Solicitud mala (encabezado de solicitud demasiado largo)
Causa
La solicitud HTTP que se envía al servidor IIS tiene un encabezado de solicitud que supera la longitud de encabezado de solicitud permitido configurada en el servidor IIS. En concreto, el encabezado Authorization contiene un vale de autenticación Kerberos grande. El vale Kerberos es tan grande porque el usuario es miembro de muchos grupos en Active Directory.
Por motivos de seguridad, el HTTP.sys en el servidor IIS rechaza la solicitud HTTP entrante porque supera los límites de tamaño configurados.
Solución
Configure las claves del Registro HTTP y en el servidor IIS para permitir tamaños de encabezado de solicitud más MaxFieldLength MaxRequestBytes grandes.
Importante
Cambiar estas claves del Registro se considera extremadamente peligroso. El aumento de los valores de estas claves hará HTTP.sys usar más memoria y puede aumentar la vulnerabilidad a ataques malintencionados. Si cambiar estas claves es la única opción, no establezca sus valores más grandes de lo que deben ser. Información sobre cómo determinar el tamaño de los encabezados de solicitud y, por lo tanto, el valor para establecer las claves del Registro se encuentra más adelante en este artículo.
Para obtener más información sobre las HTTP.sys claves del Registro para IIS, veaHttp.sys configuración del Registro para IIS.
Para obtener más información sobre HTTP.sys de errores, vea Registro de errores en API HTTP.
Determinar el tamaño de la solicitud HTTP
Para determinar el tamaño real de la solicitud HTTP, puede resultar útil usar un seguimiento de monitor de red. Con este seguimiento, podemos calcular el tamaño de la solicitud http y compararla con la configuración del servidor IIS.
También es útil consultar el registro de errores HTTP.sys para obtener información.
Ubicación: %windir%\system32\logfiles\HTTPERR\httperrX.log
La clave para resolver este problema en particular es mostrar que CLM está intentando enviar una solicitud HTTP al servidor que sea mayor que el valor predeterminado de 16k o mayor que la configuración personalizada en su MaxFieldLength y MaxRequestBytes . Para ello, use una combinación de:
- Seguimiento de monitor de red
- Mirando a través del http.sys de errores que se encuentra en
%windir%\system32\logfiles\HTTPERR\httperrX.log.
Entrada de ejemplo del 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:5 10.201.25.27 1682 10.248.10.65 80 HTTP/1.1 GET /clm 400 - RequestLength
NetMon
En el seguimiento de NetMon, para determinar el tamaño de la solicitud HTTP, siga estos pasos:
Busque el marco que envía una instrucción
GetHTTPAgregue el valor del Protocolo de control de transmisión (TCP) para cada fotograma de la instrucción HTTP hasta que el
Lenservidor IIS devuelva unGetACK.Este será el tamaño de la solicitud HTTP.
Ejemplo:
28209 19:13:04.041 53.906250 Client Server HTTP: Request, GET /CLM/content/sm/requests/SubscriberPrintDocuments.aspx
28210 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28210 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28211 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28212 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28213 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28214 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28215 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28216 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28217 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28218 19:13:04.041 53.906250 Client Server HTTP: Carga HTTP
28219 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTP
28220 19:13:04.041 53.906250 Servidor cliente HTTP: Carga HTTPCada uno de los anteriores tendrá una línea de detalles similar a la siguiente:
Tcp: Flags=.... A..., SrcPort=3281, DstPort=HTTP(80), Len=1460 , Seq=3225410770 - 3225412230, Ack=1377780890, Win=33580 (factor de escala 0) = 0
En este ejemplo, el tamaño de la solicitud HTTP está en algún lugar alrededor de 17000, que es más que el máximo predeterminado.
WireShark
- Busque el marco que envía la instrucción
GetHTTP - Vea la pestaña en la parte inferior de la pantalla WireShark titulada TCP reensamblada y el número junto a este será el tamaño de la solicitud HTTP reensamblada.