TWebRequest有两个元来检索客户端IP地址:
来自RemoteIP博士
指定与HTTP请求消息关联的远程目标计算机的IP。读取RemoteIP属性以获取与HTTP消息关联的远程目标计算机的IP地址。
来自RemoteAddr博士
指示与HTTP请求消息关联的客户端的远程IP地址。读取RemoteAddr以获取Web客户端请求源的IP地址。
它们看起来非常接近,但是RemoteIP返回一个空字符串。我要检索客户端ip地址,正确的方法是什么?
发布于 2017-08-28 15:33:22
如果我们查看源代码,我们将在TWebRequest的声明中找到以下内容
property RemoteIP: string read GetRemoteIP;
property RemoteAddr: string index 21 read GetStringVariable;执行情况:
function TWebRequest.GetRemoteIP: string;
begin
Result := EmptyStr;
end;GetStringVariable是一种虚拟方法。
让我们看看其中一个子类-- TISAPIRequest,我们将发现以下内容:
LResult := GetFieldByNameA(ServerVariables[Index]);ServerVariables21是“REMOTE_ADDR”报头,它显示客户机或代理服务器的IP。
但是GetRemoteIP没有实现。
看起来RemoteIP没有在请求中使用,因为TCGIRequest、TApacheRequest和TWinCGIRequest也没有实现GetRemoteIP。
https://stackoverflow.com/questions/45920491
复制相似问题