koa进阶史(二)

之前想着放弃CAS的验证吧,但是又去请教了一个大牛,了解到sf公司的CAS验证校验的参数不是sessionId而是另外两个,后登陆sit环境偷了两个参数后,后台接口成功返回200。然后node层也就能顺利返回到前端了,看下代码:

let cookie_val = 'ESG_SFIM_SMS_SZ22_APP=ESG_SFIM_SMS_SZ22_JT_112_6;_TOKEN_KEY_=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIwMTM3NTA1NCIsImV4cCI6MTUzNjExNzU3Nn0.godQTiuNTM89fMbfF4icAn9Wc_iPwF0yJnSnEJcwBDc';

            request.post({
                host:'http://sfim-sms-bg.sit.sf-express.com',
                url:url,
                method: "POST",
                json: true,
                body: JSON.stringify(param),
                headers: {
                    'Cookie': cookie_val
                  }
            },function(error,response,body){
               
                //重定向
                if(!error && response.statusCode == 302){
                    resolve([response.statusCode,response.headers]);
                }  
                if (!error && response.statusCode == 200) {
                    resolve([response.statusCode,body]);
                }
            })

就是上面那两个参数,之前用request的API:request.cookie()进行设置cookie,妥妥的打脸,只能加在request header里面。用wireshark进行网卡拦截,查看TCP流,成功看到request Header。

题外话:用Charles和wireshark进行http请求拦截区别?

实际项目操作经验:Charles只能拦截浏览器(客户端)发送的http/https请求,以及后台接口返回给的response。但是像我这种项目后台服务localhost在本机,但是又通过网卡请求了一个第三方服务,服务器之间的请求就抓不到了。但是wireshark是只要经过本机网卡的请求都会拦截,所以当我本机服务器localhost再去请求第三方服务器时候的请求也能够抓取到。

一直以来我以为我从Node去向第三方服务器请求时候cookie是随浏览器端请求的cookie带过去的,实际上不是,需要重新cookie赋值然后去请求,至此CAS验证才通过,不过只是临时的偷的cookie,而且公司貌似也不支持Node服务器,这些我只能在本地小打小闹。

 

【与恶龙缠斗过久,自身亦成为恶龙。凝视深渊过久,深渊将回以凝视。】

南无阿弥陀佛

posted @ 2018-09-05 11:08  tangjiao_Miya  阅读(174)  评论(0编辑  收藏  举报