HTTP-запросы от приложения исчезают между сетью / прокси-сервером отправителя и нашим веб-хостом - PullRequest
0 голосов
/ 11 сентября 2010

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

Одна странная вещь заключается в том, что установщик приложения отправляет HTTP-запрос на ZIP-файл, и он просто завершается, но при запуске приложения его первый запрос (в файл PHP) не удается.Они используют один и тот же базовый код, который используется для выполнения запроса, но просто отправляют разные параметры.Я пытался выяснить, что действительно отличается от двух вызовов, и это в основном сводится к:

  • Один запрашивает zip-файл, другой отправляет параметры в файл php;Фильтрация типов файлов?
  • В случае сбоя добавлено несколько дополнительных параметров заголовка.Я бы понял, если бы их зарезал прокси, но мог ли он полностью отбросить запрос, если бы у него были пользовательские / неподдерживаемые заголовки?

Вот базовая каркасная структура вызовов функций:

    HINTERNET hInternetOpen = InternetOpen( szAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
    HINTERNET hInternetConnect = InternetConnect( hInternetOpen, "www.server.com", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, NULL, 0 );
    HINTERNET hRequest = HttpOpenRequest( hInternetConnect, "GET", "path/query.php?params=etc", NULL, NULL, "*/*", INTERNET_FLAG_RELOAD, 0 );
    // Here I was including some custom headers, such that szHeaders would look something like:
    // "KEY:12345\nTZ:New_York\n"
    HttpSendRequest( hRequest, szHeaders, dwHeadersLen, NULL, 0 );
    InternetReadFile( hRequest, lpBuf, dwBufSize, &dwAmtRead );

Я буду настраивать новую сборку, которая обеспечит гораздо большую проверку ошибок, чтобы выяснить, какая часть запроса не выполнена и какие коды ошибок возвращены.Это также покончит с пользовательскими заголовками и любыми другими несоответствиями между этим и установщиком.

Я не очень верю, что эти вещи действительно являются причиной, так что покаЯ ищу предположения о том, что может пойти не так, или о том, что я должен перепроверить или найти.Изначально я был убежден, что это просто проблема с фильтрацией в их заблокированной сети, но после разговора с их ИТ-группой запросы, которые он делает, не блокируются ими.Возможно, я делаю какие-то нестандартные вещи.

1 Ответ

1 голос
/ 11 сентября 2010

Я бы рекомендовал использовать tcpdump или wireshark для отслеживания фактического трафика, входящего и выходящего из вашего веб-сервера. Вы видите, что их просьба поступает вообще? Если нет, я бы попросил их попробовать то же самое, как внутри, так и снаружи брандмауэра, чтобы посмотреть, что там происходит.

...