Worklight 6.1 - 如何在适配器级别的请求标头中设置 x 转发的 IP 地址

Posted

技术标签:

【中文标题】Worklight 6.1 - 如何在适配器级别的请求标头中设置 x 转发的 IP 地址【英文标题】:Worklight 6.1 - How to set x-forwarded Ip address in request header at adapter level 【发布时间】:2014-06-16 12:13:36 【问题描述】:

我正在使用 worklight 6.1,并且在请求时遇到了在适配器级别获取 x 转发 IP 地址的问题。所以现在我正在从客户端在适配器上发送客户端 IP 地址,如下所示

WL.Device.getNetworkInfo(function (networkInfo) 
                    console.log(networkInfo.ipAddress); 
                    ipadd = networkInfo.ipAddress;
                    reqParams["fldAppipAddress"] = networkInfo.ipAddress;
                );
                var invocationData = 
                        adapter : "Login",
                        procedure : "Login",
                        parameters : [id,reqParams,ipadd],
                        compressResponse : true
                ;

和适配器方面我正在设置这样的标题

var request=
             method:'POST',
             returnedContentType:'xml',
             path:serverPathIs,
             headers:"User-Agent":"","App-Version":"1.6","X-Forwarded-For":Ipaddress,
             cookies: "JSESSIONID":cookiestr,
             parameters:jsonstr,
     ;

即使这样做后我也没有得到 x-forwarded ip,请提出正确的方法。

如何在http请求的头部设置x-forwarded-for

@安东

function GetAPICal(fldjsessionid,jsonstr,pass,uid,Ipaddress)
  WL.Logger.error(jsonstr);
  WL.Logger.info(jsonstr);
    //newjson="fldPassword":enc(pass);

    var output = ;
    output = jsonConcat(jsonstr, newjson);
     serverPathIs=getServletPathInfo();
     if(fldjsessionid)
         cookieSplit = fldjsessionid.split('!');
        cookiestr = cookieSplit[0]+"!"+cookieSplit[1];
     
     else
         cookiestr="123";
     
     var request=
             method:'POST',
             returnedContentType:'xml',
             path:serverPathIs,
             headers:"User-Agent":"","App-Version":"1.6","X-Forwarded-For":Ipaddress,
             cookies: "JSESSIONID":cookiestr,
             parameters:output,
     ;

     var req = WL.Server.getClientRequest();




     var response = WL.Server.invokeHttp(request);


     return response;


【问题讨论】:

【参考方案1】:

您到底想达到什么目的?从客户端->适配器请求中获取 x-forwarded-for 标头并在适配器->后端请求中使用它?

【讨论】:

无论我们从适配器向后端发出什么请求,我们都希望标头 x-forwarded ip 在那里。 你想要什么作为该标头的值? headers:X-Forwarded-For":Ipaddress 和我从客户端发送的这个 Ipaddress 所以我想要这个作为请求。 你能粘贴完整的登录功能代码吗?看起来您从客户端发送了两次 ipaddress,但我看不出有任何原因 您已经添加了 GetAPICal 函数并且您的客户端调用了 Login 函数。如果不查看拼图的所有部分,就不可能调试流程。你能添加所有相关的功能吗?一般来说-您的代码看起来正确,它应该将 X-Forwarded-For 标头添加到适配器->后端请求。你能详细说明问题到底是什么吗?没有添加标题?错误的标头值?

以上是关于Worklight 6.1 - 如何在适配器级别的请求标头中设置 x 转发的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.1 - 如何在适配器中发送帖子值?

IBM Worklight 6.1 - 成功调用适配器后如何调用 angular.js 的“ng-controller”方法?

IBM Worklight 6.1 - 如何在较慢的网络中处理超时?

Worklight 6.1+ 中的 cookiePolicy 适配器参数有啥作用?

Worklight 6.1,Tomcat 7.0.42 上的 SQL 适配器 (Oracle 11g) JNDI 错误

Worklight 6.1-在调用适配器时,此记录“wl_antiXSRFRealm 质询处理程序的等待列表”是啥意思