WEB-приложение Сведение отчетности ((раздел целиком))

WEB-приложение Сведение отчетности- Проблема доставки запросов от клиента к серверу (раздел целиком) (29.04.2026) | (одним файлом)

Проблема доставки запросов от клиента к серверу
Описание проблемы: На клиенте - проходит авторизация, проходит получение данных дерева каталогов и гридов. При этом не проходят запросы на совершение действий и не проходят запросы после задания условий отбора. На сервере - В отладочном мониторе появляются сообщения "Socket became inactive in first line" или "Bad first line". Причины проблемы: Проблема связана с особенностями провайдера клиента. У провайдера установлено ограничение на длину любого http-запроса, либо POST-запроса в 1KB или немногим более. Обычно проблема проявляется при использовании Microsoft (ISA) Internet Security and Acceleration Server на маршрутизаторе локальной сети. Для диагностики такой ситуации можно использовать командный сценарий проверки провайдера (пример) . Сценарий покажет, что отказ происходит именно при отправке запроса, размер которого превышает 1 КВ. Вы можете написать собственный сценарий проверки, лучше соответствующий вашей ситуации, и распространить его своим клиентам. Запуск файла производится из окружения интерпретатора командной строки Windows (cmd.exe) Решение проблемы лежит не в области функциональности программного продукта, а в области его эксплуатации, конкретнее - в области организации взаимодействия между web-сервером и клиентскими рабочими местами пользователей. Проблема должна решаться специалистами, отвечающими за сопровождение программного продукта у тех клиентов, у которых имеет место описанное выше ограничение. Пути решения проблемы: 1. Обратиться к провайдеру с просьбой о снятии ограничения на размер запросов. 2. Использовать нестандартный TCP/IP порт, договорившись с провайдером о его открытии с серверной и клиентской стороны. Данный путь не гарантирует решения проблемы, но может помочь. В данном случае "провайдером" может выступать как администратор локальной сети организации, так и ISP (интернет-провайдер), в зависимости от того, как организовано подключение конечного пользователя. 3. Использовать протокол https. В этом случае провайдер не сможет анализировать содержимое обмена и, следовательно, не сможет применять ограничения. Для использования протокола https необходимо иметь сертификат, а также внести изменения в настройки web-сервера. Первые два пути могут способствовать быстрому решению проблемы. При этом стратегически правильным является путь 3 - использование протокола https. Взаимодействие по протоколу https может быть организовано с использованием сертификатов двух видов: 1) Сертификат, выдаваемый уполномоченными организациями ("настоящий" сертификат). Инструкция по получению "настоящего" сертификата включена в данное руководство, а также доступна по адресу: http://app.techmill.ru/paruspub/current/documentation/ED01679A80A74E999952269A89D95D36.html 2) Самостоятельно сгенерированный сертификат. Инструкция по генерации такого сертификата приведена Здесь. При использовании самостоятельно сгенерированного сертификата браузер пользователя будет выдавать предупреждение о сомнении в его достоверности. О том как избежать отображения такого предупреждения также написано Здесь. Действия по установке настроек web-сервера для работы по протоколу https описаны Здесь.

1. Сценарий проверки провайдера (пример)
Содержимое примера файла сценария проверки провайдера Testme.bat
    01@echo off
    02IF "%1"=="" GOTO NOHOST
    03
    04echo Checking connection...
    05AppServerFetch download %TEMP%\1.bin from http://%1/ >nul
    06IF NOT %ERRORLEVEL%==0 GOTO ERROR
    07echo passed.
    08
    09echo Checking DataMill Application Server....
    10AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml >nul
    11IF NOT %ERRORLEVEL%==0 GOTO ERROR
    12echo passed.
    13
    14echo Checking long GET....
    15AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml?data=0123456789^
    160123456789012345678901234567890123456789012345678901234567890123456789^
    170123456789012345678901234567890123456789012345678901234567890123456789^
    180123456789012345678901234567890123456789012345678901234567890123456789^
    190123456789012345678901234567890123456789012345678901234567890123456789^
    200123456789012345678901234567890123456789012345678901234567890123456789^
    210123456789012345678901234567890123456789012345678901234567890123456789^
    220123456789012345678901234567890123456789012345678901234567890123456789^
    230123456789012345678901234567890123456789012345678901234567890123456789^
    240123456789012345678901234567890123456789012345678901234567890123456789^
    250123456789012345678901234567890123456789012345678901234567890123456789^
    260123456789012345678901234567890123456789012345678901234567890123456789^
    270123456789012345678901234567890123456789012345678901234567890123456789^
    280123456789012345678901234567890123456789012345678901234567890123456789^
    290123456789012345678901234567890123456789012345678901234567890123456789^
    300123456789012345678901234567890123456789012345678901234567890123456789^
    310123456789012345678901234567890123456789012345678901234567890123456789^
    320123456789012345678901234567890123456789012345678901234567890123456789^
    330123456789012345678901234567890123456789012345678901234567890123456789^
    340123456789012345678901234567890123456789012345678901234567890123456789^
    350123456789012345678901234567890123456789012345678901234567890123456789^
    3601234567890 > nul
    37IF NOT %ERRORLEVEL%==0 GOTO ERROR
    38echo passed.
    39
    40echo Checking POST....
    41echo 01234567890 > %TEMP%\2.bin
    42AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml sending %TEMP%\2.bin >nul
    43IF NOT %ERRORLEVEL%==0 GOTO ERROR
    44echo passed.
    45
    46
    47echo Checking long POST....
    48for /L %%i in (1,1,100) DO echo 01234567890 >> %TEMP%\2.bin
    49AppServerFetch download %TEMP%\1.bin from http://%1/.system/session.xml sending %TEMP%\2.bin >nul
    50IF NOT %ERRORLEVEL%==0 GOTO ERROR
    51echo passed.
    52
    53exit /B 0
    54:ERROR
    55echo Failed.
    56exit /B 1
    57:NOHOST
    58echo Host not given.
    59exit /B 2