Técnicas para as WCAG 2.0

Ir para o conteúdo (Pressione a tecla Enter)

-

SVR1: Implementar redireccionamentos automáticos no lado do servidor em vez de no lado do cliente

Aplicabilidade

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:

Descrição

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.

Exemplos

Exemplo 1: JSP/Servlets

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).

Exemplo 2: ASP

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

Exemplo 3: PHP

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");
?>

Exemplo 4: Apache

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

Recursos

Os recursos são indicados apenas a título informativo, não implica que tenham sido aprovados.

(actualmente, não existe nenhuma indicada)

Testes

Procedimento

  1. Localize cada link ou referência programática a outra página ou página Web.

  2. 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.

  3. 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.

Resultados Esperados