当通过iframe加载网站时,网站会识别哪个IP地址?

3

这里有两个网站A和B。

A有一个包含iframe的页面,该iframe会加载B网站。 而B网站有后端代码来检测访问者的IP地址,如下所示:

// Function to get the user IP address
function getUserIP() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

如果用户访问A中的iframe页面,将获取哪个IP地址?
是客户端的IP地址,
还是站点A的IP地址?

1
这可以很容易地由你自己测试!iframe不是由服务器加载的,而是客户端加载该区域中的站点的指令,因此它是客户端IP。 - t.niese
我的主要目的是获取答案以及原因。我可以进行测试,但是我需要有两个托管信息... :-( 有点难做。 - Codemole
不需要使用两个主机才能完成。一个主机就足够了,因为你可以在同一个域上加载另一个页面。你要么会看到服务器的IP地址,要么会看到客户端的IP地址。询问为什么会出现这种情况或者是否始终如此显然是不同的问题,并且更适合作为一个问题提出来,而不仅仅是是否会出现这种情况。 - t.niese
2个回答

3

一个iframe元素代表了一个嵌套浏览上下文。iframe源由用户浏览器请求。因此,如果您检查IP地址,您将获得客户端IP。


谢谢你给我提供嵌套浏览内容的想法。 - Codemole
@raidenace 在使用 iframe 的同时有没有办法选择网站 A 的 IP? - Rashid

0

我猜它仍然会获取客户端的IP地址?因为我想iframe会发送几乎相同的头部。

客户端IP地址也将被发送。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接