-
-
Personalice la configuración de AppExpert
-
Configurar servicios y grupos de servicios para una unidad de aplicación
-
Configuración de dispositivos de punto final públicos para una aplicación
-
Especificar el orden de evaluación de las unidades de aplicación
-
Configurar grupos de persistencia para unidades de aplicación
-
Ver aplicaciones de AppExpert y configurar entidades mediante el visualizador de aplicaciones
-
Configurar la autenticación, la autorización y la auditoría de aplicaciones
-
-
Configurar una expresión de directiva avanzada: Cómo empezar
-
Expresiones de directiva avanzadas: trabajar con fechas, horas y números
-
Expresiones de directiva avanzadas: Análisis de datos HTTP, TCP y UDP
-
Expresiones para identificar el protocolo en un paquete IP entrante
-
Expresiones para códigos de estado HTTP y datos numéricos de carga HTTP distintos de las fechas
-
Operaciones de codificación HTTP, HTML y XML y caracteres «seguros»
-
Expresiones para evaluar un mensaje DNS e identificar su protocolo de portadora
-
Expresiones de directiva avanzadas: análisis de certificados SSL
-
Expresiones de directivas avanzadas: direcciones IP y MAC, rendimiento, ID de VLAN
-
Expresiones de directivas avanzadas: funciones de análisis de transmisiones
-
Ejemplos de tutoriales de directivas avanzadas para la reescritura
-
-
Comportamiento del encabezado con longitud de contenido en una directiva de reescritura
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
Comportamiento de la longitud del contenido del encabezado en una acción de reescritura de streaming
El encabezado de longitud del contenido es una de las formas de indicar la longitud del mensaje (en bytes) en una solicitud o respuesta HTTP. Además del encabezado de longitud del contenido, también puede especificar la longitud del mensaje de una de las siguientes maneras:
- Codificación fragmentada
- Terminación FIN
En un proceso de transmisión, NetScaler envía datos de forma continua después de procesar la acción de reescritura. Como los datos se envían de forma continua y NetScaler no los conserva, se desconoce la longitud real del mensaje que se enviaría al cliente. Por lo tanto, no se puede mencionar el valor correcto del encabezado Content-Length en la respuesta.
Para ofrecer el proceso de streaming, la función de reescritura de NetScaler convierte la forma de indicar la longitud del mensaje desde el encabezado Content-Length a la terminación FIN. Como parte de la conversión, NetScaler corrompe el encabezado Content-Length al reorganizar los cuatro primeros caracteres del nombre del encabezado.
En HTTP, se espera que el cliente ignore los encabezados que no entiende. Por lo tanto, el cliente no entiende el nombre del encabezado de longitud de contenido dañado y, por lo tanto, ignora el encabezado. Para mejorar el rendimiento de NetScaler, el encabezado se corrompe en lugar de eliminarse. Al dañar el nombre del encabezado en lugar de eliminarlo, se evita volver a calcular la suma de verificación, ya que la suma de verificación no se cambia si los mismos bytes están en un orden diferente.
Por ejemplo, considere la siguiente solicitud HTTP:
GET / HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, /
Accept-Language: en-GB
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; CMDTDF; MS-RTC LM 8)
Accept-Encoding: gzip, deflate
Host: test.example.net
Connection: Keep-Alive
<!--NeedCopy-->
En un escenario operativo, la respuesta entre NetScaler y el servidor de fondo para esta solicitud HTTP es la siguiente:
HTTP/1.1 200 OK
Content-Length: 10967
Connection: close
var SERVER_URL = 'https\x3a\x2f\x2ftest.example.net\x2f';
var WEB_SERVER_HOST = 'test.example.net';
<!--NeedCopy-->
Sin embargo, la respuesta que recibe el cliente de NetScaler en un escenario no operativo es la siguiente. Se cambia el nombre del encabezado Content-Length
a ntcoent-Length
.
HTTP/1.1 200 OK
ntCoent-Length: 10967
nnCoection: close
var SERVER_URL = 'https\x3a\x2f\x2ftest.example.net\x2f';
var WEB_SERVER_HOST = 'test.example.net';
<!--NeedCopy-->
En general, las aplicaciones cliente admiten las tres formas de transacción: encabezado con longitud de contenido, codificación fragmentada y terminación FIN. Por lo tanto, la conversión del encabezado de longitud del contenido a la terminación FIN no debe causar ningún problema. Sin embargo, si la aplicación no funciona debido a esta modificación, debe inhabilitar el proceso de transmisión.
Cómo inhabilitar el proceso de transmisión en una directiva de reescritura
Puede inhabilitar el proceso de transmisión en una directiva de reescritura mediante una de las siguientes formas:
-
Agregue una acción que no sea de transmisión asociada a una directiva de reescritura que tenga una prioridad más alta. La acción debe realizarse de forma que no modifique la respuesta.
Por ejemplo:
add rewrite action non_stream_act replace_all HTTP.RES.BODY(1000000) HTTP.RES.FULL_HEADER -search text("pattern_which_will_not_match_in_body")
El valor del cuerpo de esta acción de reescritura debe ser mayor que el valor en el que funciona la acción de transmisión actual.
-
En lugar de la configuración de transmisión, utilice la configuración de no transmisión.
Nota:
Pasar del procesamiento de streaming al procesamiento sin streaming podría afectar al rendimiento de NetScaler.
Por ejemplo, una configuración de transmisión se puede convertir en una configuración de no transmisión de la siguiente manera:
Configuración de transmisión:
add rewrite action rw_act_1 replace_all HTTP.RES.BODY(1000) ""http"" -search text("http") add policy patset pat_list bind policy patset pat_list abcd bind policy patset pat_list defg add rewrite action rw_act_2 replace_all HTTP.RES.BODY(1000) ""replaced_data"" -search patset("pat_list") <!--NeedCopy-->
Configuración sin transmisión:
add rewrite action rw_act_1 replace_all HTTP.RES.BODY(1000) ""http"" -search regex(re/http/) add rewrite action rw_act_1 replace_all HTTP.RES.BODY(1000) ""http"" -search regex(re/abcd|defg/) <!--NeedCopy-->
Compartir
Compartir
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.