Problema, Pergunta
Seguinte configuração: IHS Webserver com o módulo Dispatcher configurado que, por sua vez, aponta para um farm de renderização do servidor de aplicativos do Websphere no qual uma instância do CQ está em execução. Uma classe ou script jsp em CQ chama o método response.sendRedirect()
que resulta em um redirecionamento errado: o nome do servidor interno e a porta do servidor de aplicativos Websphere, que não são acessíveis de fora, são expostos no cabeçalho de resposta Location
que é usado para fazer o redirecionamento real.
A causa raiz desse problema é o próprio Websphere já que a implementação da IBM do método HttpServletResponse#sendRedirect()
é diretamente influenciado por cabeçalhos de solicitação personalizados, por padrão gerados pelo plug-in IHS do Websphere. Isso é considerado como um problema de aprisionamento tecnológico da IBM.
Resolução, Resposta
Usando mod_headers
no servidor da Web IHS, é possível passar cabeçalhos específicos do Websphere para o servidor de aplicativos, incluindo esses cabeçalhos com a diretiva RequestHeader
. Além disso, esses cabeçalhos personalizados precisam ser explicitamente permitidos na configuração do Dispatcher, caso contrário, esses cabeçalhos personalizados serão ignorados.
Exemplo:
- domínio público: http://www.mydomain.com
Configuração IHS
Edite o arquivo de configuração httpd.conf
do servidor da Web IHS e faça o seguinte:
- certifique-se de que o módulo
mod_headers
está presente e carregado - adicione cabeçalhos específicos do WAS usando a diretiva
RequestHeader
Exemplo (trecho 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>
Configuração do Dispatcher
No nível Dispatcher, é necessário incluir a lista de cabeçalhos de solicitação configurados acima na lista de cabeçalhos de cliente que o Dispatcher encaminhará ao farm de renderização definido, servidor de aplicativo Websphere nesse caso.
Por favor, faça o seguinte:
- edite o arquivo de configuração
dispatcher.any
- localize a seção
/clientheaders
e adicione cabeçalhos adicionais para serem incluídos - reinicie o IHS
Exemplo (trecho de dispatcher.any
):
... /clientheaders { ... "$WSSN" "$WSSP" } ...
Configuração do Websphere
O cabeçalho $ WSSP
do Websphere especifica a porta e o $ WSSN
define o nome do host a ser usado quando response.sendRedirect()
é chamado no Websphere. Além disso, a porta fornecida no cabeçalho $WSSP
é também usada para mapear o host virtual no Websphere.
Conecte-se ao Console de Administração do Websphere e faça o seguinte:
- navegue para
Ambiente > Hosts Virtuais
- selecione a configuração do host virtual que é usada para CQ
- clique em
Host Aliases
- adicione porta
80
- reinicie o Websphere, se necessário
OBSERVAÇÃO: pode ser necessário adicionar mais cabeçalhos específicos do Websphere, dependendo da configuração. Por favor, consulte este documento descrevendo os cabeçalhos específicos do Websphere e seus significados.
Download
Fazer logon em sua conta