Configuración: IHS Webserver con módulo Dispatcher configurado, que, a su vez, apunta a un servidor de aplicaciones Websphere donde se está ejecutando una instancia CQ. Una clase o un script jsp de CQ llama al método response.sendRedirect()
que resulta en una redirección incorrecta: el nombre del servidor interno y el puerto de la aplicación Websphere, que no es accesible desde el exterior, se expone en el encabezado de respuesta de la ubicación
que se utiliza para hacer la redirección real.
La causa principal de este problema es la propia Websphere, ya que la implementación del método HttpServletResponse#sendRedirect()
de IBM está directamente influenciada por los encabezados de solicitud personalizados, generados de forma predeterminada por el complemento IHS de Websphere. Esto se considera un problema de bloqueo de proveedores de IBM.
Usando mod_headers
en el servidor web de IHS es posible pasar encabezados específicos de Websphere al servidor de aplicaciones añadiendo dichos encabezados con la directiva RequestHeader
. Además, estos encabezados personalizados deben estar explícitamente permitidos en la configuración de Dispatcher, de lo contrario serán ignorados.
Ejemplo:
Edite el archivo de configuración httpd.conf
del servidor web de IHS y haga lo siguiente:
mod_headers
está presente y cargadoRequestHeader
Ejemplo (extracto de httpd.conf
):
... LoadModule headers_module modules/mod_headers.so ... <Directory /> <IfModule disp_apache2.c> # set custom Websphere headers RequestHeader set $WSSN www.mydomain.com RequestHeader set $WSSP 80 SetHandler dispatcher-handler </IfModule> Options FollowSymLinks </Directory>
Dispatcher configuration
En el nivel de Dispatcher, es necesario añadir la lista de encabezados de solicitud configurados anteriormente a la lista de encabezados de cliente que Dispatcher reenviará a la pista de renderizado definida, en este caso el servidor de aplicaciones Websphere.
Haga lo siguiente:
dispatcher.any
/clientheaders
y añadir encabezados adicionales que se incluiránEjemplo (extracto de dispatcher.any
):
... /clientheaders { ... "$WSSN" "$WSSP" } ...
Configuración de Websphere
El encabezado $WSSP
de Websphere especifica el puerto y $WSSN
define el hostname que se utilizará cuando se llame a response.sendRedirect()
en Websphere. Además, el puerto proporcionado en el encabezado $WSSP
también se utiliza para mapear el host virtual en Websphere.
Conéctese a la Consola de administración de Websphere y haga lo siguiente:
Entorno > Hosts virtuales
Alias de host
80
NOTA: Puede ser necesario añadir más encabezados específicos de Websphere, dependiendo de la configuración. Consulte este documento que describe los encabezados específicos de Websphere y su significado.
Descargar
Inicia sesión en tu cuenta