在 Worklight Adapter 上获取客户端 IP 地址
Get Client IP address on Worklight Adapter
我们正在使用 WL6.2 开发混合应用程序。在我们的适配器中,我们有这样的代码:
var request = WL.Server.getClientRequest();
var IPAddress = request.getHeader('X-Archieved-Client-IP');
if(IPAddress == null || IPAddress == undefined || IPAddress == "") {
IPAddress = request.getHeader('X-Archieved-Client-IP');
}
if(IPAddress == null || IPAddress == undefined || IPAddress == "") {
IPAddress = request.getRemoteAddr();
}
if(IPAddress == null || IPAddress == undefined || IPAddress == "") {
//This will never happen, only for precaution.
IPAddress = "192.168.1.1";
}
commonParams.originatingIp = (IPAddress)?IPAddress:request.getRemoteAddr();
我无法在适配器上获取客户端 IP 地址,我们的 Web 服务只能看到一个 IP 地址,即数据电源 IP.And 在日志中,我看到我们的数据电源 IP 地址为"orginatingIP"。这意味着 "getRemoteAddr()"
正在执行。
<OriginatingIP>DataPowerIP</OriginatingIP>
如果我只保留这部分代码:
var request = WL.Server.getClientRequest();
var IPAddress = request.getHeader('X-Archieved-Client-IP');
commonParams.originatingIp = IPAddress;
我得到的值是 "null"。
<OriginatingIP>null</OriginatingIP>
我也试过这个解决方案“IBM Worklight 6 - How would i get client IP address on adapter side”也没有用。
有什么建议吗?谢谢
我会按如下方式更新您的适配器
var request = WL.Server.getClientRequest();
var ipAddress = request.getHeader('x-client-ip');
switch(ipAddress){
case "":
case null:
case undefined:
//This will never happen, only for precaution.
ipAddress = "192.168.1.1";
break;
}
从这个 post https://developer.ibm.com/answers/questions/10123/how-do-you-get-the-original-ip-doing-the-request-to-your-bluemix-app.html 看来你应该使用 x-client-ip
而不是 X-Archieved-Client-IP
这个线程对我有用。
what is the right way to get request's ip
尝试request.getRemoteAddr()
我们正在使用 WL6.2 开发混合应用程序。在我们的适配器中,我们有这样的代码:
var request = WL.Server.getClientRequest();
var IPAddress = request.getHeader('X-Archieved-Client-IP');
if(IPAddress == null || IPAddress == undefined || IPAddress == "") {
IPAddress = request.getHeader('X-Archieved-Client-IP');
}
if(IPAddress == null || IPAddress == undefined || IPAddress == "") {
IPAddress = request.getRemoteAddr();
}
if(IPAddress == null || IPAddress == undefined || IPAddress == "") {
//This will never happen, only for precaution.
IPAddress = "192.168.1.1";
}
commonParams.originatingIp = (IPAddress)?IPAddress:request.getRemoteAddr();
我无法在适配器上获取客户端 IP 地址,我们的 Web 服务只能看到一个 IP 地址,即数据电源 IP.And 在日志中,我看到我们的数据电源 IP 地址为"orginatingIP"。这意味着 "getRemoteAddr()"
正在执行。
<OriginatingIP>DataPowerIP</OriginatingIP>
如果我只保留这部分代码:
var request = WL.Server.getClientRequest();
var IPAddress = request.getHeader('X-Archieved-Client-IP');
commonParams.originatingIp = IPAddress;
我得到的值是 "null"。
<OriginatingIP>null</OriginatingIP>
我也试过这个解决方案“IBM Worklight 6 - How would i get client IP address on adapter side”也没有用。
有什么建议吗?谢谢
我会按如下方式更新您的适配器
var request = WL.Server.getClientRequest();
var ipAddress = request.getHeader('x-client-ip');
switch(ipAddress){
case "":
case null:
case undefined:
//This will never happen, only for precaution.
ipAddress = "192.168.1.1";
break;
}
从这个 post https://developer.ibm.com/answers/questions/10123/how-do-you-get-the-original-ip-doing-the-request-to-your-bluemix-app.html 看来你应该使用 x-client-ip
而不是 X-Archieved-Client-IP
这个线程对我有用。
what is the right way to get request's ip
尝试request.getRemoteAddr()