ADC

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

La carga útil de una solicitud o respuesta HTTP consiste en información del protocolo HTTP, como encabezados, URL, contenido del cuerpo e información de versión y estado. Al configurar una expresión de directiva avanzada para evaluar la carga útil HTTP, utiliza un prefijo de expresión de directiva avanzada y, si es necesario, un operador.

Por ejemplo, utilice la siguiente expresión, que incluye el prefijo http.req.header("<header_name>") y el operador existe, 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 directivas avanzadas con operadores booleanos y aritméticos. Por ejemplo, la siguiente expresión compuesta podría ser útil con varias funciones de NetScaler, como el almacenamiento en caché integrado, la reescritura y la respuesta. Esta expresión utiliza primero el operador booleano && para determinar si una conexión HTTP incluye el encabezado Content-Type con el valor “text/html”.” Si la operación devuelve el valor 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 directivas 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 de la carga útil
  • Tipos de registro

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

  • HTTP.REQ.BODY(integer). Devuelve el cuerpo de una solicitud HTTP como objeto de texto multilínea, hasta la posición de carácter designada en el argumento entero. 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 del argumento entero. Si hay menos caracteres en el cuerpo que los especificados en entero, se devuelve todo el cuerpo.
  • CLIENT.TCP.PAYLOAD(integer). Devuelve los datos de carga útil TCP en forma de cadena, empezando por el primer carácter de la carga útil y continuando por el número de caracteres del argumento entero.

A continuación se muestra un ejemplo que se evalúa como TRUE si un cuerpo de respuesta de 1024 bytes contiene la cadena “https”, y esta cadena aparece después de la cadena “cadena de inicio” y antes de la cadena “cadena final”:

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 útil HTTP y TCP

En este artículo