プログラム経由での画像読み込みテスト

元記事 : プログラム経由で画像を表示させる際の表示バラつきを調べてみた (TRASH-NEWS)

[1]〜[6]は同じサイト(同じドメイン)の画像、[7]〜[11]は異なるサイト(異なるドメイン)の画像を読み込んでいます。

TRASH-NEWSロゴ : 画像ファイルURL直指定 ←[1]-[6]で読み込んでいる画像

TRASH-NEWSロゴ : 画像ファイルURL直指定 ←[7]-[11]で読み込んでいる画像

TRASH-NEWSロゴ : SameSiteRead TRASH-NEWSロゴ : SameSiteTempRedirect TRASH-NEWSロゴ : SameSitePermaRedirect
左[1] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=SameSiteRead
中[2] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=SameSiteTempRedirect
右[3] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=SameSitePermaRedirect

[1]はPHPのreadfile関数で読み込んだもの。[2]はPHPのheader関数(のLocation)で307 Temporary Redirect転送させて読み込んだもの。[3]はPHPのheader関数(のLocation)で301 Moved Permanently転送させて読み込んだもの。

TRASH-NEWSロゴ : SameSiteRead&Ext=.png TRASH-NEWSロゴ : SameSiteRead&Att=1&Ext=.png TRASH-NEWSロゴ : 無指定
左[4] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=SameSiteRead&Ext=.png
中[5] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=SameSiteRead&Att=1&Ext=.png
右[6] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php

[4]はPHPのheader関数で画像用のヘッダをつけたのち、PHPのreadfile関数で読み込んだもの。[5]はPHPのheader関数で画像用のヘッダ(Content-Disposition含)をつけたのち、PHPのreadfile関数で読み込んだもの。[6]はじかに画像を読み込んだもの(画像のURLを直接指定)。

TRASH-NEWSロゴ : CrossSiteRead TRASH-NEWSロゴ : CrossSiteTempRedirect TRASH-NEWSロゴ : CrossSitePermaRedirect
左[7] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=CrossSiteRead
中[8] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=CrossSiteTempRedirect
右[9] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=CrossSitePermaRedirect

[6]はPHPのreadfile関数で読み込んだもの。[7]はPHPのheader関数(のLocation)で307 Temporary Redirect転送させて読み込んだもの。[8]はPHPのheader関数(のLocation)で301 Moved Permanently転送させて読み込んだもの。

TRASH-NEWSロゴ : CrossSiteRead&Ext=.png TRASH-NEWSロゴ : CrossSiteRead&Att=1&Ext=.png
左[10]: http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=CrossSiteRead&Ext=.png
右[11] : http://www.dabun-doumei.com/topix/20080621_Opera950ImageTest.php?Mode=CrossSiteRead&Att=1&Ext=.png

[9]はPHPのheader関数で画像用のヘッダをつけたのち、PHPのreadfile関数で読み込んだもの。[10]はPHPのheader関数で画像用のヘッダ(Content-Disposition含)をつけたのち、PHPのreadfile関数で読み込んだもの。[12]はじかに画像を読み込んだもの(画像のURLを直接指定)。

20080621_Opera950ImageTest.phpのソースコード
$SameSiteSRC = '../image/event/20080621_Opera950ImageTest.png';
$CrossSiteSRC = 'http://images.sakura.ne.jp/20080621_Opera950ImageTest.png';
if(isset($_GET['Mode'])){
	$Mode = $_GET['Mode'];
	if(isset($_GET['Ext'])){
		header('Content-length: 6280');
		header('Content-type: image/png');
		if(isset($_GET['Att'])){
			header('Content-Disposition: attachment; filename="TRASH-NEWS.png"');
		}
	}
	switch($Mode){
		case 'SameSiteRead' : 
			readfile($SameSiteSRC);
			break;
		case 'SameSiteTempRedirect' : 
			header("Location:{$SameSiteSRC}",TRUE,307);
			break;
		case 'SameSitePermaRedirect' : 
			header("Location:{$SameSiteSRC}",TRUE,301);
			break;
		case 'CrossSiteRead' : 
			readfile($CrossSiteSRC);
			break;
		case 'CrossSiteTempRedirect' : 
			header("Location:{$CrossSiteSRC}",TRUE,307);
			break;
		case 'CrossSitePermaRedirect' : 
			header("Location:{$CrossSiteSRC}",TRUE,301);
			break;
		default : 
			break;
	}
	exit();
}else{
	readfile($SameSiteSRC);
	exit();
}