WCAG 2.0 実装方法集

メインコンテンツへスキップ

-

SVR3: HTTPリファラを用いて、適合しているコンテンツからしか適合していないコンテンツにアクセスできないようにする

適用(対象)

サーバサイドのスクリプトを用いて生成されたコンテンツで、コンテンツの適合したバージョンがHTTPリファラによって不適合バージョンの代替として提供されているもの

これは、次の達成基準に関連する実装方法である:

ユーザーエージェント及び支援技術によるサポート

一部のユーザーエージェントでHTTPリファラヘッダをサポートしていなかったり、送信しないように設定されていたり、又はプロキシやファイアウォールにより取り除かれたりすることがあるため、一部のユーザーはこの実装方法で実装されている場合には不適合なコンテンツへのアクセスができなくなる可能性がある。

解説

この実装方法の目的は、不適合及び適合したバージョンが両方提供されているときに、利用者がコンテンツのアクセシブルなバージョンを取得できることを保証することである。

適合要件 1は、「適合している代替バージョン」がある限り、不適合なページが適合の範囲内に含まれることを認めている。コンテンツ制作者にとって、不適合なコンテンツの中から適合しているコンテンツへのアクセシビリティ・サポーテッドなリンクを含むことは常に可能とはいえない。そこで、不適合のバージョンへは適合しているページからしか到達できないようにするために、コンテンツ制作者はサーバサイドのスクリプト技術(例:PHP、ASP、JSP)に依存しなければならなくなる。

この実装方法は、不適合のコンテンツへは、適合しているページからしか到達できないことを保証するための、HTTP refererにより提供される情報の利用方法について説明する。HTTP refererヘッダはユーザーエージェントによって設定され、(もしあれば)ユーザーエージェントが不適合なページを参照する際のページのURIを含む。

この方法を実装するために、コンテンツ制作者は不適合なページそれぞれについて、コンテンツの適合しているバージョンのURIを特定する。ページの不適合なバージョンへのリクエストを受け取った際に、サーバはHTTP refererヘッダの値と、適合しているバージョンのURIを比較して、不適合バージョンへのリンクが適合しているバージョンからのものであるかどうかを判断する。不適合バージョンはHTTP refererが不適合バージョンのURIと一致したときにだけ提供される。それ以外の時には、利用者はコンテンツの適合したバージョンへとリダイレクトされる。HTTPリファラヘッダ内のURIを比較する際に、URI中にクエリーやtargetのような関連のない変化も考慮に入れる必要があることに注意すべきである。

事例

事例 1:インタラクティブな物理プロセスのデモ

オンラインの物理の授業では、インタラクティブな物理プロセスのデモを提供するために専用のモデリング言語を使用する。そのモデリング言語のためのユーザーエージェントは支援技術との互換性がない。そのサイトは利用者が適合するプロセスとモデルの説明を含むページからインタラクティブなデモにアクセスしようとしない限り、サーバがそのリクエストを不適合バージョンへのリンクを含む、適合しているページへとリダイレクトする、HTTPリファラを使用するスクリプトを含んでいる。生徒は不適合のインタラクティブなバージョンへのアクセスを選択する事ができるが、そうしない生徒もプロセスについて学ぶことができる。

事例 2: PHPでHttpリファラを使う

次の例は、この実装方法がPHPでどのように使われるかを説明している。conforming.phpとnon-conforming.phpという不適合なコンテンツへのアクセスが適合しているコンテンツからのみとなるようにするために連携する2つのファイルを含む。

conforming.php:

コード例:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>適合しているコンテンツ</title>
    	</head>
	<body>
		<h1>これは適合しているページです。</h1>
		<p>ここから、<a href="non-conforming.php">不適合なページ</a>へと移動する
		ことができます。</p>
	</body>
</html>
    				

non-conforming.php:

コード例:


<?php 
// リクエストが「conforming.php」という文字列を含むファイルから来た場合、ページをレンダリングする。
	if(stristr($_SERVER['HTTP_REFERER'], "conforming.php")) {
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>不適合コンテンツ</title>
	</head>
	<body>
		<h1>これは不適合なページです。</h1>
		<p> <?php echo $_SERVER['HTTP_REFERER']; ?>から来たので、このページにあるコンテンツを見ることができます。
	</body>
</html>
<?php
}
// 参照するページがconforming.phpではない場合、利用者を適合しているバージョンにリダイレクトする。
else  {
header("Location: conforming.php");
}
?>					
    				

このコードの実装サンプル:SVR3の実装サンプル

検証

チェックポイント

不適合コンテンツに対して、WCAGに適合している代替バージョンが提供されている場合:

  1. 宣言している適合レベルでWCAGに適合していないページで、HTTPリファラの使用によってアクセシブルな代替バージョンが提供されているものを特定する。

  2. 不適合のコンテンツのURIを開く。

  3. 開いたページが次のうちの一つである:

    1. 不適合のコンテンツの適合する代替バージョン

    2. 適合する代替バージョンと不適合のコンテンツ双方へのリンクを含むページ

判定基準

注意: この実装方法が「達成基準を満たすことのできる実装方法」の一つである場合、このチェックポイントや判定基準を満たしていなければ、それはこの実装方法が正しく用いられていないことを意味するが、必ずしも達成基準を満たしていないことにはならない。場合によっては、別の実装方法によってその達成基準が満たされていることもありうる。

日本語訳における注記:

この文書の正式版は、W3Cサイトで公開されている英語の文書であり、この日本語訳には誤訳が含まれていることもありえます。なお、文中にある「日本語訳における注記」は、W3Cの原文にはないものであり、日本語訳監修者が追記したものです。