检测是否在我的域外的页面中加载了图像


Detect if an image is loaded in a page outside my domain

我想创建一个URL,当加载到我的域内的页面中时,它会返回一个图像,当加载在我的域外的页面<em中时,会返回另一个稍微修改过的图像。>

我正沿着这样的思路思考:

<?php
    header('Content-type: image/jpg');
    if (/**image is loaded within my domain**/)
    {
        readfile("image1.jpg");
    }
    else
    {
        readfile("image2.jpg");
    }
?>

我能在if语句中添加一些内容使其发挥作用吗?这可能适用于所有浏览器?

有没有一种方法可以在没有php的情况下做到这一点?

您可以在请求中使用referrer URL并检查它是否是您的域。这是使用$_SERVER['HTTP_REFERER']完成的。

但是,HTTP_REFERER URL可以很容易地被客户端修改,有时甚至可以不设置,所以在使用它时需要小心。

我不知道,你将如何获得不在你的域中的图像请求,但你可以看看$_SERVER['HTTP_HOST']。也许,HTTP_REFERER正是你所需要的。不管怎样,看看这里。