ADC

Acerca de la evaluación de la carga HTTP y TCP

La carga útil de una solicitud o respuesta HTTP consiste en información del protocolo HTTP, como encabezados, una dirección URL, contenido del cuerpo e información de versión y estado. Cuando se configura una expresión de sintaxis predeterminada para evaluar la carga útil HTTP, se utiliza un prefijo de expresión de sintaxis predeterminado y, si es necesario, un operador.

Por ejemplo, utilice la siguiente expresión, que incluye el http.req.header("<header_name>") prefijo y el operador existente, si quiere determinar si una conexión HTTP incluye un encabezado personalizado denominado “MyHeader”:

http.req.header("myHeader").exists

También puede combinar varias expresiones de directiva avanzadas con operadores booleanos y aritméticos. Por ejemplo, la siguiente expresión compuesta podría ser útil con varias funciones de Citrix ADC, como Almacenamiento en caché integrado, Reescritura y Responder. Esta expresión utiliza primero el operador && Boolean para determinar si una conexión HTTP incluye el encabezado Content-Type con un valor de “text/html.” Si esa operación devuelve un valor de FALSE, la expresión determina si la conexión HTTP incluye un encabezado “Transfer-Encoding” o “Content-Length”.

(http.req.header("Content-Type").exists && http.req.header("Content-Type").eq("text/html")) || (http.req.header("Transfer-Encoding").exists) || (http.req.header("Content-Length").exists)

La carga útil de un paquete TCP o UDP es la parte de datos del paquete. Puede configurar expresiones de directiva avanzadas para examinar las funciones de un paquete TCP o UDP, incluidas las siguientes:

  • Dominios de origen y destino
  • Puertos de origen y destino
  • El texto en la carga útil
  • Tipos de registros

Los prefijos de expresión siguientes extraen texto del cuerpo de la carga útil:

  • HTTP.REQ.BODY(integer). Devuelve el cuerpo de una solicitud HTTP como objeto de texto de líneas múltiples, hasta la posición de carácter designada en el argumento integer. Si hay menos caracteres en el cuerpo de los especificados en el argumento, se devuelve todo el cuerpo.
  • HTTP.RES.BODY(integer). Devuelve una parte del cuerpo de la respuesta HTTP. La longitud del texto devuelto es igual al número en el argumento entero. Si hay menos caracteres en el cuerpo que los especificados en entero, se devuelve todo el cuerpo.
  • CLIENT.TCP.PAYLOAD(integer). Devuelve datos de carga TCP como una cadena, comenzando por el primer carácter de la carga útil y continuando por el número de caracteres en el argumento integer.

Lo que sigue es un ejemplo que se evalúa como TRUE si un cuerpo de respuesta de 1024 bytes contiene la cadena “https”, y esta cadena se produce después de la cadena “cadena de inicio” y antes de la cadena “cadena de fin”:

http.res.body(1024).after_str("start_string").before_str("end_string").contains("https")

Nota: Puede aplicar cualquier operación de texto al cuerpo de la carga útil. Para obtener información sobre las operaciones que se pueden aplicar al texto, consulte Expresiones de directivas avanzadas: evaluación de texto.

Acerca de la evaluación de la carga HTTP y TCP

En este artículo