Fiddlerscript для отправки измененного запроса на сервер не будет работать - PullRequest
0 голосов
/ 23 сентября 2019

Я создал правило fiddlescript, которое, как я думал, будет ожидать определенного объекта: значение, автоматически отправит часть значения json обратно на другой URI в виде запроса на отправку с такой же информацией заголовка, как куки.

Когда скрипт активирован, я получаю сообщение об ошибке.Я предполагаю, что это как-то связано со значением объекта json.

    static function OnBeforeResponse(oSession: Session) {
        if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "application/json")) {
            oSession["ui-backcolor"] = "blue"; 
            oSession.utilDecodeResponse();
        }
        if (oSession.oResponse.headers.ExistsAndContains("Content-Type", "application/json") && oSession.utilFindInResponse("faceId", false) > -1) {
            oSession["ui-backcolor"] = "green"; 
            oSession.utilDecodeResponse();
            var oBody = System.Text.Encoding.UTF8.GetString(oSession.requestBodyBytes);
            var j = Fiddler.WebFormats.JSON.JsonDecode(oBody);
            var facId = j.JSONObject["faceId"];
            var reqBod = '{"faceId":"' + facId + '"}';
            oSession.oRequest.headers.HTTPMethod == "POST";
            oSession.utilSetRequestBody(reqBod);
            oSession.url = "https://urltosendpostrequest.com/Search";
            FiddlerObject.utilIssueRequest(oSession);
        }

Я ожидал, что сервер примет измененный POST-запрос, но вместо этого скрипт столкнется с ошибкой.

FiddlerScript OnBeforeResponse0 failed. X 
There was a problem with your FiddlerScript. 
Function expected Function expected at Microsoft.)Script.Latainding.CallValue(Object val, Objects arguments, Boolean construct, Boolean brackets, VsaEngine engine, Object thisob, Binder binder, Culturelnfo culture, Strings namedParameters) at Microsoft.JScript.Latainding.Call(Binder binder, Objects arguments, ParameterModifier]] modifiers, Culturelnfo culture, Strings namedParameters, Boolean construct, Boolean brackets, VsaEngine engine) at Microsoft.JScript.Latainding.Call(ObjectS arguments, Boolean construct, Boolean brackets, VsaEngine engine) at Fiddler.ScriptNamespace.Handlers.OnBeforeResponse(Session oSession) at Fiddler.ScriptBase. 1:1(Session OD) in CA.lenkins\Fiddler_Windows\workspace\Fiddler2\Common\Application\ Scripting\ScriptBase.csiline 921 

1 Ответ

0 голосов
/ 24 сентября 2019

Вы смешиваете доступ к запросу и заголовку / телу ответа.Также кажется, что вам не ясно, что данные POST относятся к запросу, а не к ответу.Поэтому убедитесь, что вы манипулируете правильными данными (запросом или ответом).

Или вы хотите перехватить запрос и отправить пользовательский ответ обратно клиенту?Если да, вы должны посмотреть на Флаг автоответчика x-replywithfile.

Ваш скрипт имеет код в OnBeforeResponse, поэтому вы можете получить доступ только к свойствам и методам, связанным с ответом.Однако у вас есть следующий код, который пытается получить доступ к запросу (что, конечно, невозможно, так как запрос уже был перенаправлен):

oSession.oRequest.headers.HTTPMethod == "POST";
oSession.utilSetRequestBody(reqBod);
FiddlerObject.utilIssueRequest(oSession);
...