您的位置:首页 > Web前端 > JavaScript

日常问题记录--使用fiddler自动响应jsonp结构的响应

2017-10-19 20:41 363 查看
#问题表现#

在使用fiddler做对请求做mock时,有时需要对jsonp格式响应进行映射;

jsonp响应的特点为callback为一个随机字符串;

使用普通的fiddler 做mock无法进行正常mock;

#解决办法#

保留响应中的callback函数名;

替换响应内容;

#实现#

fiddler修改脚本,增加读取本地文件内容的函数;

修改OnBeforeResponse,替换响应内容;

下面代码快中OnBeforeResponse被注释的部分根据url中关键词进行替换;

注意本地文件的编码需要与请求的编码一致;

static function readFile(filename)
{
var fso = new ActiveXObject( "Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename, 1);
var s = "";
while(!f.AtEndOfStream)
s += f.ReadLine();
f.Close();
return s;
}

static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}

/*    if(oSession.url.indexOf("RrjfGetJifenPointList") > 1){
oSession.utilDecodeResponse();
var body = oSession.GetResponseBodyAsString();
var string = readFile("C:\\Users\\zhangkai1\\Desktop\\aaabbb.txt");
var index = body.indexOf('(');
var b = body.slice(0, index);
body = b + '('+ string + ')';
oSession.utilSetResponseBody(body);
}

if(oSession.url.indexOf("RrjfGetAssistUserList") > 1){
oSession.utilDecodeResponse();
var body = oSession.GetResponseBodyAsString();
var string = readFile("C:\\Users\\zhangkai1\\Desktop\\aaabbb.txt");
var index = body.indexOf('(');
var b = body.slice(0, index);
body = b + '('+ string + ')';
oSession.utilSetResponseBody(body);
}
*/
if(oSession.url.indexOf("CommonAppointSubmit") > 1){
oSession.utilDecodeResponse();
var body = oSession.GetResponseBodyAsString();
var string = readFile("C:\\Users\\zhangkai1\\Desktop\\aaabbb.txt");
var index = body.indexOf('(');
var b = body.slice(0, index);
body = b + '('+  string  + ');}catch(e){}';
oSession.utilSetResponseBody(body);
}

}


#其他#

fiddler使用微软的JScript,而JScript是可以对windows本地文件做读写,注意包括写操作;

后续想编写一个自己的fiddler插件,实现jsonp的mock,自动生成jmeter用例,上传指定url到扫描平台等功能,方便日常使用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐