Técnica Scripts de servidor WCAG 2.2
SVR3Usar la cabecera HTTP referer para garantizar que solo se pueda acceder al contenido no conforme desde contenido conforme
En resumen
Esta técnica explica cómo usar, con scripts de servidor (PHP, ASP, JSP...), la cabecera HTTP referer para servir una página no conforme únicamente cuando el usuario llega a ella desde su versión conforme; en caso contrario, el servidor redirige a la versión accesible. Resulta útil cuando el contenido no conforme (por ejemplo, una simulación interactiva en un formato propietario) no permite incluir un enlace accesible hacia la alternativa.
Aplicabilidad
Contenido creado mediante scripts del lado del servidor en el que se proporciona una versión conforme del contenido como alternativa a una versión no conforme en función de la cabecera HTTP Referer.
Descripción
El objetivo de esta técnica es garantizar que los usuarios puedan obtener una versión accesible del contenido cuando se proporcionan tanto versiones no conformes como conformes.
El requisito de conformidad 1 permite incluir páginas no conformes dentro del alcance de la conformidad siempre que tengan una versión alternativa conforme. No siempre es posible que los autores incluyan enlaces compatibles con la accesibilidad hacia el contenido conforme desde dentro del contenido no conforme. Por tanto, los autores pueden tener que recurrir a tecnologías de scripting del lado del servidor (p. ej., PHP, ASP, JSP) para garantizar que a la versión no conforme solo se pueda llegar desde una página conforme.
Esta técnica describe cómo usar la información que proporciona la cabecera HTTP referer para garantizar que al contenido no conforme solo se pueda llegar desde una página conforme. La cabecera HTTP referer la establece el agente de usuario y contiene el URI de la página (si la hay) que remitió al agente de usuario a la página no conforme.
Para implementar esta técnica, el autor identifica, para cada página no conforme, el URI de la versión conforme del contenido. Cuando se recibe una petición de la versión no conforme de una página, el servidor compara el valor de la cabecera HTTP referer con el URI de la versión conforme para determinar si el enlace a la versión no conforme procede de la versión conforme. La versión no conforme solo se sirve si la cabecera HTTP referer coincide con el URI de la versión no conforme. En caso contrario, el usuario es redirigido a la versión conforme del contenido. Tenga en cuenta que, al comparar el URI de la cabecera HTTP referer, deben tenerse en consideración las variaciones no relevantes del URI, como las de la cadena de consulta y el fragmento de destino.
Ejemplos
Demostraciones interactivas de procesos físicos
Un curso de física en línea usa un lenguaje de modelado propietario para ofrecer demostraciones interactivas de procesos físicos. El agente de usuario del lenguaje de modelado no es compatible con las tecnologías de asistencia. El sitio incluye un script que usa la cabecera HTTP referer para garantizar que, salvo que los usuarios intenten acceder a la demostración interactiva desde una página que contiene una descripción conforme del proceso y de los modelos, el servidor redirija la petición a una página conforme que contiene un enlace a la versión no conforme. Los estudiantes pueden optar por acceder a la versión interactiva no conforme, pero quienes no lo hagan pueden, aun así, aprender sobre el proceso.
Usar la cabecera HTTP referer en PHP
El siguiente ejemplo ilustra cómo puede usarse esta técnica en PHP. Incluye dos ficheros, conforming.php y non-conforming.php, que trabajan conjuntamente para garantizar que la única forma de acceder al contenido no conforme sea desde el contenido conforme.
PHP conforme
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Conforming Content</title>
</head>
<body>
<h1>This is a conforming page</h1>
<p>From here, you can visit the <a href="non-conforming.php">non-conforming
page</a>.</p>
</body>
</html>
PHP no conforme
<?php
// if the request comes from a file that contains the string "conforming.php"
// then render the page
if(stristr($_SERVER['HTTP_REFERER'], "conforming.php")) {
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Non-Conforming Content</title>
</head>
<body>
<h1>This is a non-conforming page</h1>
<p>Because you came from <?php echo $_SERVER['HTTP_REFERER']; ?>,
you are able to view the content on this page.</p>
</body>
</html>
<?php
}
// if the referring page is not conforming.php, then redirect the user to
// the conforming version
else {
header("Location: conforming.php");
}
?>
Hay disponible un ejemplo práctico: contenido conforme.
Pruebas
Procedimiento
Cuando se proporcionan alternativas conformes con las WCAG para contenido no conforme:
- Identificar las páginas que no cumplen las WCAG en el nivel de conformidad declarado en las que las alternativas accesibles se sirven en función de la cabecera HTTP Referrer.
- Visitar el URI del contenido no conforme.
-
Verificar que la página resultante es una de las siguientes:
- una versión alternativa conforme del contenido no conforme
- una página que incluye un enlace tanto a la versión alternativa conforme como al contenido no conforme
Resultados esperados
- La comprobación n.º 3.1 o la n.º 3.2 es verdadera.
Cómo lo comprobamos en ADDAW
En las auditorías de accesibilidad de ADDAW revisamos cada criterio de conformidad siguiendo este catálogo de técnicas: comprobamos si la web aplica una técnica suficiente y documentamos cada fallo común con capturas y el código afectado, para que el equipo de desarrollo sepa exactamente qué corregir. Los informes siguen la metodología del Observatorio de Accesibilidad y la norma UNE-EN 301 549.
Fuente y licencia
Traducción al español, no oficial, realizada por ADDAW a partir de la técnica SVR3 del documento «Techniques for WCAG 2.2» del W3C (versión del repositorio público del W3C a 22/10/2026). Copyright © W3C® (MIT, ERCIM, Keio, Beihang). Se publica conforme a la licencia de documentos del W3C. El texto normativo de referencia es el original en inglés; si detecta un error en la traducción, escríbanos.