Какие преобразования выполняются для запросов, отправляемых через Fiddler? - PullRequest
1 голос
/ 30 мая 2011

В настоящее время я работаю над проектом обратного прокси, выполненным в ASP.Net.Он получает запросы от клиента, создает объект HttpWebRequest на другом сервере (с теми же заголовками HTTP), читает ответ и пересылает его клиенту.Моя проблема заключается в том, что при использовании Internet Explorer (это никогда не происходит при использовании Firefox, Chrome или Safari) запрос, отправленный прокси-сервером, генерирует сообщение об ошибке HTTP 400 от удаленного сервера.Я полагал, что что-то не так с созданием запроса, и дважды проверил мой код безуспешно.Поэтому я использовал fiddler как на клиенте, так и на прокси-машине, чтобы сравнить оба запроса и посмотреть, смогу ли я найти существенную разницу между ними.Проблема заключается в том, что при запуске fiddler на клиентском компьютере отклик HTTP 400 исчезает.
Это сбивает с толку, потому что я не думал, что fiddler изменил полученные запросы, однако я предполагаю, что это дает подсказки о том, что не так с запросом.Я не знаю, какие преобразования применяются к запросам, но, похоже, это решение моей проблемы.
Кто-нибудь знает, что может объяснить такое поведение?

1 Ответ

0 голосов
/ 30 мая 2011

Если вы не написали код для этого, Fiddler обычно не изменяет отправленные вами HTTP-запросы. Вы можете использовать низкоуровневый инструмент, такой как NetMon, для захвата фактического запроса с и без Fiddler.

Единственное исключение, которое может иметь смысл, - это то, что некоторые серверы выдают ошибку, если они получают полный путь в строке запроса. Э.Г.

GET http://www.example.com/ HTTP/1.1
Host: www.example.com

выдает ошибку, а

GET / HTTP/1.1
Host: www.example.com

нет. Разница в том, что первый предназначен для отправки на прокси-сервер, а второй - только на исходный сервер. Серверы должны принимать первые, если они его получают, но некоторые глючат и не делают этого. Fiddler «исправит» эту проблему, потому что она преобразует первое в последнее в соответствии с правилами для прокси.

Сказав это, я понятия не имею, как ваш код мог сгенерировать первый, поскольку обычно System.NET позаботится о форматировании ваших запросов для вас.

...