0

トラッキングピクセルに問題があります。トラッキングピクセルは、次のようにメインページに含まれています。

<img src="tracking.gif" alt="" />

tracking.gifには次のものが含まれています。

<?php
header("Location: http://www.mydomain.com/referrer.php?url=http%3A%2F%2Fwww.external.com")
?>

referrer.phpは次のようになります。

<?php
$url = $_GET['url'];
?>
<!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>
        <title>Referring...</title>
        <link rel="stylesheet" type="text/css" href="css.css" />
        <meta http-equiv="refresh" content="0.3; URL=<?php echo $url ?>" />
        <script type="text/javascript">
                    window.setTimeout(function() {
                        location.href = '<?php echo $url ?>';
                    }, 300);
        </script>
    </head>
    <body>
        Some text.
    </body>
</html>

残念ながら、外部Webサイトへのリダイレクトは機能しません。referrer.phpのみがロードされます。何故ですか?tracking.gifのreferrer-urlを外部WebサイトのURLに置き換えると、コードが機能します。

詳細: referrer.phpを直接呼び出すと、機能しています。そして、htaccessを介してサーバーを設定し、tracking.gifをphpファイルとして処理する必要があります。

よろしくお願いします!

4

1 に答える 1

0

あなたの質問に対する答えは、ブラウザがさまざまなタイプのアセットをどのように処理するか、そしてどのアセットが実際に実行できるかということにあります。

最初のコード:

<img src="tracking.gif" alt="" />

ある場所から画像を読み込んで表示するようにブラウザに指示します。そのために、画像に対してHTTPリクエストを送信します。これが、2番目のコードが理由です。

<?php header("Location: ....") ?>

実際に動作します。ブラウザはtracking.gifのHTTPリクエストを送信し、応答はブラウザを別の場所に転送します。これはすべて問題ありません(ただし302、完全を期すために応答ステータスもに設定する必要があります)。ブラウザは画像データを検索するために新しいURLに移動します。

これが問題にぶつかったところです。新しいページへのリダイレクトをたどると、画像は返されません。HTMLが返されます。ブラウザはこれを画像として解釈できません。それはナンセンスのようです。そして、それは破棄されます。ブラウザは、ナンセンスな画像データに埋め込まれているコードをチェックしたり、実行したりすることはありません。画像の描画を担当するパイプラインにデータを渡すだけで、「わかりません」と表示され、次のタスクに進みます。

これがreferrer.php、ブラウザに直接ロードしたときにページが実際に機能する理由です。ブラウザはHTMLとJavascriptを想定しているためです。同じデータがブラウザが画像を期待して受信した場合、結果は失敗になります。

画像の読み込み時にブラウザが別のURLに移動しようとしているようですが、これはセキュリティモデルでは許可されていません。画像ファイルは、画像ファイルを含むページに動作を挿入できません実際に達成しようとしていることをもう少し詳しく説明できますか?

于 2012-06-02T11:25:53.853 に答える