Techniken für WCAG 2.0

Zum Inhalt

-

SVR1: Server-seitige statt client-seitige Implementierung automatischer Umleitungen

Anwendbarkeit

Server-seitige Techniken, einschließlich server-seitiger Scripting-Sprachen und Server-Konfigurationsdateien mit URLs oder URL-Pattern für Weiterleitungen.

Die Technik bezieht sich auf:

Beschreibung

Das Ziel dieser Technik ist es, Verwirrungen zu vermeiden, die dadurch verursacht werden können, wenn zwei neue Seiten in schneller Abfolge geladen werden, weil eine Seite (diejenige, die vom Benutzer angefordert wurde) zu einer anderen weiterleitet. Einige Benutzeragenten unterstützen die Benutzung des HTML meta-Elements, um den Benutzer nach einer festgelegten Anzahl an Sekunden zu einer anderen Seite weiterzuleiten. Dies führt dazu, dass die Seite für einige Benutzer nicht mehr barrierefrei ist, besonders für Benutzer mit Screenreadern. Server-seitige Techniken stellen Methoden zur Verfügung, um Weiterleitungen auf eine Art zu implementieren, die Benutzer nicht verwirrt. Ein server-seitiges Script oder Konfiguration kann dazu führen, dass der Server eine entsprechende HTTP-Antwort mit einem Status-Code im 3xx range und einen Location header mit einer anderen URL sendet. Wenn der Browser diese Antwort erhält, ändert sich die Adressleiste und der Browser macht eine Anfrage mit dem neuen URL.

Beispiele

Beispiel 1: JSP/Servlets

In Java Servlets oder JavaServer Pages (JSP) können Entwickler HttpServletResponse.sendRedirect(String url) benutzen.

Code-Beispiel:

			…
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
…
  response.sendRedirect("/newUserLogin.do");
}

Dies sendet eine Antwort mit einem 302 Status-Code („Found“) und einen Location header mit dem neuen URL an den Benutzeragenten. Es ist auch möglich, einen anderen Status-Code mit response.sendError(int code, String message) festzulegen, wobei eine der Konstanten in der Benutzerschnittstelle javax.servlet.http.HttpServletResponse als Status-Code definiert wird.

Code-Beispiel:

			…
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
…
  response.sendError(response.SC_MOVED_PERMANENTLY, "/newUserLogin.do");
}

Wenn eine Anwendung HttpServletResponse.encodeURL(String url) zum Umschreiben von URLs benutzt, weil die Anwendung von Sitzungen abhängig ist, sollte die Methode HttpServletResponse.encodeRedirectURL(String url) statt HttpServletResponse.sendRedirect(String url) benutzt werden. Es ist außerdem möglich, einen URL mit HttpServletResponse.encodeURL(String url) umzuschreiben und diesen URL dann an HttpServletResponse.sendRedirect(String url) zu übergeben.

Beispiel 2: ASP

In Active Server Page (ASP) mit VBScript können Entwickler Response.Redirect benutzen.

Code-Beispiel:

			  Response.Redirect "newUserLogin.asp"

oder

Code-Beispiel:

			Response.Redirect("newUserLogin.asp")

Der unten stehende Code ist ein vollständigeres Beispiel mit einem bestimmten HTTP Status-Code.

Code-Beispiel:

			Response.Clear
Response.Status = 301
Response.AddHeader "Location", "newUserLogin.asp"
Response.Flush
Response.End

Beispiel 3: PHP

In PHP können Entwickler einen raw HTTP header mit der header-Methode senden. Der unten stehende Code sendet einen 301 Status-Code und eine neue Adresse. Wenn der Status nicht explizit festgelegt wird, sendet die Weiterleitungs-Antwort einen HTTP Status-Code 302.

Code-Beispiel:

			 <?php
header("HTTP/1.1 301 Moved Permanently);
header("Location: http://www.example.com/newUserLogin.php");
?>

Beispiel 4: Apache

Entwickler können den Apache Web Server so konfigurieren, dass er Weiterleitungen wie in dem folgenden Beispiel verarbeitet.

Code-Beispiel:

			redirect 301 /oldUserLogin.jsp http://www.example.com/newUserLogin.do

Ressourcen

Ressourcen sind nur zu Informationszwecken und keine offizielle Empfehlung.

(derzeit keine aufgelistet)

Tests

Vorgehensweise

  1. Finden Sie jeden Link oder programmtechnische Referenz zu einer anderen Seite oder Webseite.

  2. Prüfen Sie für jeden Link oder jede programmtechnische Referenz zu einem URI in der Reihe der zu evaluierenden Webseiten, ob die referenzierte Webseite Code enthält (z.B. meta-Element oder Script), der dazu führt, dass eine client-seitige Weiterleitung ausgelöst wird.

  3. Prüfen Sie für jeden Link oder jede programmtechnische Referenz zu einem URI in der Reihe der zu evaluierenden Webseiten, ob der referenzierte URI keine Weiterleitung ODER eine server-seitige Weiterleitung ohne Zeitlimit auslöst.

Erwartete Ergebnisse

Wenn dies eine ausreichende Technik für ein Erfolgskriterium ist, dann bedeutet das Scheitern an diesem Testverfahren nicht zwangsläufig, dass das Erfolgskriterium nicht auf irgendeine andere Art und Weise erfüllt wurde, sondern nur, diese Technik nicht erfolgreich implementiert wurde und nicht benutzt werden kann, um die Konformität zu erklären.