跟踪像素应该通过引用页面加载外部网站 - 但它不起作用

Trackingpixel should load external website through a referring page - but it doesn't work

本文关键字:网站 外部 加载 不起作用 像素 引用 跟踪      更新时间:2023-09-26

我对跟踪像素有问题。跟踪像素包含在主页上,如下所示:

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

跟踪.gif包含以下内容:

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

引荐来源.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>

不幸的是,重定向到外部网站不起作用。只有引荐来源.php被加载。为什么?如果我将跟踪中的引荐来源网址替换为外部网站的网址,则代码有效.gif。

更多信息:如果我直接致电推荐人.php它正在工作。我通过htaccess设置了服务器,它应该处理跟踪.gif作为php文件。

提前感谢您的帮助!

您的问题的答案在于浏览器如何处理不同类型的资产,以及允许实际执行哪些资产。

您的第一段代码:

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

告诉浏览器从某个位置加载和显示图像。为了做到这一点,它将对图像发出HTTP请求。这就是为什么你的第二段代码:

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

实际有效。浏览器发送 HTTP 请求以进行跟踪.gif,响应将浏览器定向到另一个位置。这一切都很好(尽管您还应该将响应状态设置为 302 以确保完整性),并且浏览器会转到您的新 URL 以搜索图像数据。

这就是我们遇到的问题。当我们按照重定向到我们的新页面时,我们没有得到图像 - 我们得到一些 HTML。浏览器无法将其解释为图像。这似乎是无稽之谈。所以它被丢弃了。浏览器当然不会检查或执行嵌入在无意义的图像数据中的代码。它只是将数据交给负责绘制图像的管道,然后管道会说"我不明白这个"并继续下一个任务。

这就是为什么当你直接在浏览器中加载你的referrer.php页面时,它实际上可以工作 - 因为浏览器期待HTML和Javascript。当浏览器接收到相同的数据时,结果是失败。

似乎试图在加载图像时使浏览器转到不同的 URL,这是安全模型不允许的 - 图像文件无法将行为注入包含它们的页面。你能更详细地解开你真正想要实现的目标吗?