Tecnologias do lado do servidor, incluindo linguagens de scripts do lado do servidor e ficheiros de configuração do servidor com URLs ou padrões de URL para redireccionamentos.
Esta técnica está relacionada com:
O objectivo desta técnica é evitar a confusão que possa ser originada quando duas novas páginas são carregadas em rápida sucessão, porque uma página (a pedida pelo utilizador) redirecciona para outra. Alguns agentes de utilizador suportam a utilização do elemento meta HTML para redireccionar o utilizador para outra página após um determinado número de segundos. Isto torna a página inacessível a alguns utilizadores, especialmente utilizadores com leitores de ecrã. As tecnologias do lado do servidor fornecem métodos para implementar redireccionamentos de forma a não confundir os utilizadores. Um ficheiro de configuração ou um script do lado do servidor pode fazer com que o utilizador envie uma resposta HTTP apropriada com um código de estado no intervalo 3xx e um cabeçalho Localização com outro URL. Quando o browser recebe esta resposta, a barra de localização muda e o browser faz um pedido com o novo URL.
Em Java Servlets ou Java Server Pages (JSP), os programadores podem utilizar HttpServletResponse.sendRedirect(String url).
Código Exemplo:
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
…
response.sendRedirect("/newUserLogin.do");
}
Envia uma resposta com um código de estado 302 ("Encontrado") e um cabeçalho Localização com o novo URL para o agente de utilizador. Também é possível definir outro código de estado com response.sendError(int code, String message) com uma das constantes definida na interface javax.servlet.http.HttpServletResponse como código de estado.
Código Exemplo:
…
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
…
response.sendError(response.SC_MOVED_PERMANENTLY, "/newUserLogin.do");
}
Se uma aplicação utilizar HttpServletResponse.encodeURL(String url) para reescrita de URL, uma vez que a aplicação depende das sessões, deve ser utilizado o método HttpServletResponse.encodeRedirectURL(String url) em vez de HttpServletResponse.sendRedirect(String url). É igualmente possível reescrever um URL com HttpServletResponse.encodeURL(String url) e, em seguida, passar este URL para HttpServletResponse.sendRedirect(String url).
Em Active Server Page (ASP) com VBScript, os programadores podem utilizar Response.Redirect.
Código Exemplo:
Response.Redirect "newUserLogin.asp"
ou
Código Exemplo:
Response.Redirect("newUserLogin.asp")
O código seguinte é um exemplo mais completo com um código de estado HTTP específico.
Código Exemplo:
Response.Clear
Response.Status = 301
Response.AddHeader "Location", "newUserLogin.asp"
Response.Flush
Response.End
Em PHP, os programadores podem enviar um cabeçalho HTTP básico com o método header . O código seguinte envia um código de estado 301 e uma nova localização. Se o estado não for explicitamente definido, a resposta de redireccionamento envia um código de estado HTTP 302.
Código Exemplo:
<?php
header("HTTP/1.1 301 Moved Permanently);
header("Location: http://www.example.com/newUserLogin.php");
?>
Os programadores podem configurar o servidor da Web Apache para processar redireccionamentos, tal como no exemplo seguinte.
Código Exemplo:
redirect 301 /oldUserLogin.jsp http://www.example.com/newUserLogin.do
Os recursos são indicados apenas a título informativo, não implica que tenham sido aprovados.
Utilizar redireccionamentos normais: não danifique o botão de retrocesso! (página em inglês) (Sugestão W3C QA).
HTTP/1.1 Definições do Código de Estado: Redireccionamento 3xx (página em inglês).
HTTP 301 Técnicas de Redireccionamento Definitivo (página em inglês) por Shailesh N. Humbad.
Interface javax.servlet.http.HttpServletResponse (página em inglês) na documentação da API Java Servlets 2.3.
Cabeçalho (página em inglês) no Manual PHP.
Módulo Apache mod_alias (página em inglês) na Documentação do Servidor HTTP Apache Versão 2.2 descreve como os redireccionamentos podem ser especificados no Apache 2.2.
Módulo mod_alias (página em inglês) na Documentação do Servidor HTTP Apache Versão 1.3 (página em inglês) descreve como os redireccionamentos podem ser especificados no Apache 1.3.
(actualmente, não existe nenhuma indicada)
Localize cada link ou referência programática a outra página ou página Web.
Para cada link ou referência programática a um URI no conjunto de páginas Web que estão a ser avaliadas, verifique se a página Web referenciada contém um código (por ex., script ou elemento meta) que origine um redireccionamento do lado do cliente.
Para cada link ou referência programática a um URI no conjunto de páginas Web que estão a ser avaliadas, verifique se o URI referenciado não origina um redireccionamento OU origina um redireccionamento do lado do servidor sem um tempo limite excedido.
O passo 2 é falso e o passo 3 é verdadeiro.