51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5246|回复: 13
打印 上一主题 下一主题

[原创] 求救!ajax函数返回值的关联

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-3-2 11:27:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wyh1987com 于 2011-3-3 09:02 编辑

现在在做一个类似邮件系统的项目,客户端发送一个带有scriptsessionid的请求,但搜索上文找不到服务端发送了这个id,后来才发现原来服务端是直接计算这个id再返回的,socket发送包的内容如下:
recv  buf412 1024
        "engine._sendData(batch); } }; dwr.engine.setPollMethod = function(type) { "
        "dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { d"
        "wr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.e"
        "ngine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.en"
        "gine._debug(\"Manually setting the Poll Type is not supported\"); }; dwr.e"
        "ngine._origScriptSessionId = \"1A5F25F719D5B9AA3D7C22E7EFD27D49\"; dwr.eng"
        "ine._sessionCookieName = \"JSESSIONID\"; dwr.engine._allowGetForSafariButM"
        "akeForgeryEasier = \"false\"; dwr.engine._scriptTagProtection = \"throw 'a"
        "llowScriptTagRemoting is false.';\"; dwr.engine._defaultPath = \"/CsTelex/"
        "dwr\"; dwr.engine._pollWithXhr = \"false\"; dwr.engine._scriptSessionId = "
        "null; dwr.engine._getScriptSessionId = function() { if (dwr.engine._script"
        "SessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptS"
        "essionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; dwr"
        ".e"

recv  buf413 1024
        "' :\r\n"
        "           columns = columns1;\r\n"
        "           break;\r\n"
        "        case 'autoNotice' :\r\n"


就是那句return dwr.engine._scriptSessionId应该进行参数化让客户端正确发送请求呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-3-2 15:36:17 | 只看该作者
你用的什么协议录制的?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-3-2 15:40:15 | 只看该作者
回复 2# andyguo


    socket录制的,系统在刷新邮件的页面中内嵌了ajax,服务器返回的scriptsessionid我找不到,所以客户端发送请求也无法关联
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2011-3-2 15:41:49 | 只看该作者
用web/HTML协议的URL BASED同样是这个问题,serve responce页面中找不到返回的scriptsessionid
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    5#
    发表于 2011-3-2 21:12:55 | 只看该作者
    这行不是么

    ScriptSessionId = \"1A5F25F719D5B9AA3D7C22E7EFD27D49\";
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2011-3-3 09:01:16 | 只看该作者
    回复 5# msnshow

    这个ID还要经过dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000)处理后才是返回给客户端的ID
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    7#
    发表于 2011-3-3 19:57:59 | 只看该作者
    客户端收到的BUF是哪段
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2011-3-4 10:08:38 | 只看该作者
    回复 7# msnshow

    一楼贴的就是接受的BUF吧,用了AJAX的方法,直接返回这段函数了,客户端接受这个包后,发出的请求包如下:
    send  buf494 931
    "callCount=1\n"
    "page=/CsTelex/telex/acars/omessage/omessageView.jsp\n"
    "httpSessionId=<sessionid2>\n"
    "scriptSessionId=D9D6F48C4C8AC485A94F8A47EDD3DED3742\n"
    "c0-scriptName=OmessageTableManager\n"
    "c0-methodName=findOutBoxTableList\n"
    "c0-id=0\n"
    "c0-e2=string:\n"
    "c0-e1=Array:[reference:c0-e2]\n"
    "c0-e4=stringESC\n"
    "c0-e3=Array:[reference:c0-e4]\n"
    "c0-e6=number:0\n"
    "c0-e5=Array:[reference:c0-e6]\n"
    "c0-e8=number:20\n"
    "c0-e7=Array:[reference:c0-e8]\n"
    "c0-e10=string:\n"
    "c0-e9=Array:[reference:c0-e10]\n"
    "c0-e12=string:\n"
    "c0-e11=Array:[reference:c0-e12]\n"
    "c0-e14=string:\n"
    "c0-e13=Array:[reference:c0-e14]\n"
    "c0-e16=string:\n"
    "c0-e15=Array:[reference:c0-e16]\n"
    "c0-param0=Object_Object:{parm_s_selectedIds:reference:c0-e1, grid_sort_dat"
    "eTime:reference:c0-e3, grid_page_start:reference:c0-e5, grid_page_size:ref"
    "erence:c0-e7, grid_search_fields:reference:c0-e9, grid_search_query:refere"
    "nce:c0-e11, grid_uxFilter_fields:reference:c0-e13, grid_uxFilter_query:ref"
    "erence:c0-e15}\n"
    "batchId=0\n"
    这时候已经有了scriptsessionid了,是不是客户端自己处理了服务端返回的函数了呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2011-3-4 22:24:34 | 只看该作者
    请问LZ,如果客户端发送不正确的scriptsessionid,会出现什么情况呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2011-3-8 09:04:15 | 只看该作者
    回复 9# hokage2000


        那段时用来刷新邮件的收件箱的,没发送正确ID就没有刷新成功了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2011-3-10 17:17:15 | 只看该作者
    如果你要做socket关联的话,请参看我的这篇文章http://www.docin.com/p-72573998.html
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2011-3-10 20:56:06 | 只看该作者
    我感觉自己还是个菜鸟,LR。好郁闷啊!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-8-5 13:06:05 | 只看该作者
    还是没能解决问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2011-12-15 16:49:59 | 只看该作者
    今天我也碰到这个问题,其实在DWR在每个SUBMIT前都会有一个请求将ScriptSessionID获得,然后再再后面用Math生成随机数,只需要每次SUBMIT前获取这个值加上LR的RND数字就可以了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-6-26 00:20 , Processed in 0.081167 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表