Fiddler更改参数发布请求和postdata OnBeforeRequest

时间:2013-05-21 14:58:29

标签: fiddler

我想在此处请求之前更改参数名称是特殊功能但没有任何作用

static function ReplaceQueryParameter(sName: String, sValue: String)
{
    var re:RegExp;
    if (sValue == null) {
        re = new RegExp( "(" + sName + "=)(([^&]*)|$)");
     var   ret = gs_QueryString.replace(re, '');
        gs_QueryString = ret;
    }
    else {
        re = new RegExp( "(" + sName + "=)(([^&]*)|$)");
       var ret = gs_QueryString.replace(re, "$1" + sValue);
        gs_QueryString = ret;
    }
}


  static function OnBeforeRequest(oSession: Session)
{


    gs_QueryString = System.Text.Encoding.UTF8.GetString(oSession.requestBodyBytes);
    ReplaceQueryParameter('username','username1');
          SetBodyFromQueryString(oSession);

}

任何帮助?

1 个答案:

答案 0 :(得分:0)

此代码存在多个问题。首先,看起来你正在尝试跨多个请求共享一个变量(“gs_QueryString”)。由于多个Sessions并行执行,这将导致竞争条件和损坏。

您也对请求中的数据感到困惑。

requestBodyBytes byte []包含任何POST或PUT正文中的字节。 GET没有任何正文字节。

url字符串包含包含任何QueryString参数的URL。所有请求都有一个网址。

如果您尝试更改QueryString(URL是URL的一部分),请使用:

var gs_QueryString = oSession.url;
oSession.url = ReplaceQueryParameter('username','username1');

...并更新ReplaceQueryParameter函数以返回值,而不是尝试更新未受保护的共享变量。