启用百度CDN后EMLOG无法正常评论者IP

    选择打赏方式

最近百度云赠送了我1TB的CDN流量,于是我就切换到了这个CDN

在昨晚,我发现评论不能正常获取到我的IP

就以为百度CDN不支持X-Forwarded-For便去官网查找

找到了Client IP 和 Real IP

根据专业文档解释Client IP返回的是真实访问者的IP

我就在EMLOG的核心代码中修改了下,发现虽然不显示本地IP,但是却显示百度CDN的回源IP

于是又仔细的检查下,发现返回的字段不是CLIENT_IP而是True-Client-Ip

修改后又开始返回本地保留IP了


----分割线----

/**
 * 获取用户ip地址
 */
function getIp() {
 $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
 if(isset($_SERVER['HTTP_TRUE_CLIENT_IP'])){
  $list = explode(',', $_SERVER['HTTP_TRUE_CLIENT_IP']);
  $ip = $list[0];
 }
 if (!ip2long($ip)) {
  $ip = '';
 }
 return $ip;
}

上面这段才是正确的获取CLIENT-IP字段的代码

直接在/include/lib/function.base.php找到修改即可(CDN必须支持CLIENT_IP这个响应头,若不支持,请按照http://bjdxwx.com/emlog/197.html)

----分割线----


发现这种情况后,便找了一个可以输出HTTP响应头的PHP代码

<?php
if (!function_exists('getallheaders'))
{
function getallheaders()
{
foreach ($_SERVER as $name => $value)
{
if (substr($name, 0, 5) == 'HTTP_')
{
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
}
?>
<?php
print_r(getallheaders());
?>

创建了一个名为test.php的文件直接访问

可以看到,在CLIENT-IP/X-REAL-IP/X-FORWARDE-FOR这三个存储IP的响应头中都没有我的IP

我就判断为DNS劫持导致的

PING了下域名


202.150.19.35 ?

查询下归属地后发现是陕西广电。。。

1 (3).jpg

再在百度CDN查询下后发现是他们的节点

1 (2).jpg

就想到可能是这个节点的问题,然后随便拉个一个百度CDN的节点重定向了下

1 (5).jpg然后就,正常了???


好了,问题出现在这个节点,我就去找百度CDN客服


1 (1).jpg1 (4).jpg

真无语了

版权声明:若无特殊注明,本文皆为《 小徐 》原创,转载请保留文章出处。
本文链接:启用百度CDN后EMLOG无法正常评论者IP http://bjdxwx.com/zqzb/372.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻大笑可怜吃惊害羞调皮鄙视示爱大哭开心偷笑嘘奸笑委屈抱抱愤怒思考日了狗胜利不高兴阴险乖酷滑稽

评论信息框

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!