2015-04-22 54 views
1

我们正在使用WL6.2开发混合应用程序。在我们的适配器,我们有这样的代码:在Worklight适配器上获取客户端IP地址

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地址,以及我们的网络服务只看到这是数据功率IP.And在日志中一个IP地址我将我们的数据电源IP地址视为“orginatingIP”。这意味着"getRemoteAddr()"正在执行。

<OriginatingIP>DataPowerIP</OriginatingIP> 

如果我不停的代码只有这部分:

我得到价值为 “零”。

<OriginatingIP>null</OriginatingIP> 

我也试过这个解决方案“IBM Worklight 6 - How would i get client IP address on adapter side”,也没有工作。

有什么建议吗?感谢

回答

2

我会更新你的适配器遵循

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; 
} 

从这个帖子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