2015-04-22 122 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