Подтвердить что ты не робот

Как использовать Fiddler для изменения кода состояния в ответе HTTP?

Мне нужно протестировать код клиентского приложения, который я написал, чтобы проверить его "обработку различных кодов состояния, возвращаемых в ответе HTTP с веб-сервера.

У меня есть Fiddler 2 (прокси-сервер для веб-отладки), и я считаю, что есть способ изменить ответы с помощью этого приложения, но я изо всех сил пытаюсь выяснить, как это сделать. Это было бы самым удобным способом, так как это позволило бы мне оставить код клиента и сервера немодифицированным.

Может ли кто-нибудь помочь, поскольку я хотел бы перехватить HTTP-ответ, отправляемый с сервера на клиент, и изменить код состояния до того, как он достигнет клиента?

Любые советы будут высоко оценены.

4b9b3361

Ответ 1

Хорошо, поэтому я предполагаю, что вы уже можете отслеживать трафик клиент/сервер. То, что вы хотите сделать, это установить точку останова на ответ, а затем поиграть с ней, прежде чем отправлять ее клиенту.

Вот несколько способов сделать это:

  • Правилa > Автоматические точки остановa > После ответов
  • В блоке quickexec (черный ящик внизу) введите "bpafter yourpage.svc". Теперь Fiddler остановится в точке останова перед всеми запросами на любой URL-адрес, содержащий "yourpage.svc". Введите "bpafter" без параметров, чтобы очистить точку останова.
  • Программно изменять ответ с помощью FiddlerScript. Лучшая документация для FiddlerScript находится на официальном сайте: http://www.fiddler2.com/Fiddler/dev/

Как только вы получите ответ, остановленный в точке останова, просто дважды щелкните его, чтобы открыть его в инспекторах. Теперь у вас есть пара вариантов:

  • Рядом с зеленой кнопкой "Запуск до завершения" (которую вы нажимаете для отправки ответа) есть раскрывающийся список, позволяющий выбрать некоторые типы ответов по умолчанию.
  • Или, в Инспекторе заголовков, измените код ответа и сообщение в текстовом поле вверху.
  • Или, щелкните инспектора "Raw" и беспорядок с необработанным ответом, чтобы сделать с ним произвольные вещи. Также хороший способ увидеть, что делает ваш клиент, когда он получает неверный ответ, который вы, вероятно, будете испытывать случайно:)

Ответ 2

Другой альтернативой является использование вкладки Fiddler AutoResponder (на правой панели). Это позволяет вам поймать запрос на любой URI, который соответствует строке, и подавать "консервированный" ответ из файла. Файл может содержать как заголовки, так и полезную нагрузку. Преимущество такого подхода заключается в том, что вам не нужно писать FiddlerScript, и вам не нужно обрабатывать каждый запрос вручную с помощью точки останова.

Вы установили бы правило в Fiddler, как показано ниже (убедитесь, что вы разрешаете несанкционированные запросы, иначе все остальные HTTP-запросы потерпят неудачу).

Настройка автоответчика Fiddler В этом примере любой запрос, URI которого включает в себя "fooBar", получит законченный ответ. Формат файла зависит от ваших API (вы можете использовать свой браузер для перехвата "реального" ответа и основывать его на этом), но мой выглядел следующим образом:

HTTP/1.1 409 Conflict
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Max-Age: 86400
Content-Type: application/vnd.api+json
Content-Length: 149
Date: Tue, 28 Mar 2017 10:03:29 GMT

{"errors":[{"code":"OutOfStock","detail":"Item not in stock","source":{"lineId":{"type":"Order line Number","id":"1"}},"meta":{"availableStock":0}}]}

Я обнаружил, что ему нужен возврат каретки в конце последней строки (т.е. после json) и что заголовок Content-Length должен соответствовать количеству символов в json, иначе webapp будет зависать. Ваш пробег может отличаться.