Пустая POST форма с использованием SSPI

Друзья, если слова Apache, Active Directory, методы отправки веб-форм POST и GET для вас ничего не значат, то просто не читайте то, что я ниже понаписал.

Просто столкнулся с довольно интересной проблемой совместимости ПО, довольно долго пытался ее определить, и, одним словом, кому-то это может быть полезно. Так что эта заметка направлена на веб-разработчиков, у которых могут возникнуть похожие трудности.

h3. Введение в ситуацию

В локальной сети (построенной на домене *Active Directory*) успешно функционировал веб-сайт на веб-сервере Apache 2.2 с использованием PHP и Oracle (в качестве СУБД). Авторизация пользователей проходила исключительно по IP-адресам: тот, кто зашел на сайт с компьютера владельца — сервером считался тем самым владельцем :)
В один прекрасный день было решено проводить авторизацию средствами домена, в том числе и на веб-сайте.
Для этой цели был скачен и успешно установлен модуль для Apache — mod_auth_sspi.

И в чем же проблема?

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

Самое странное, что иногда формы успешно отправлялись и все замечательно работало.

Что же происходило на самом деле.

Это была проблема совместимости новой версии mod_auth_sspi 1.0.4. По непонятным причинам форма успешно отправлялась раз в 15 секунд (приблизительно). И причем та форма, которая отправлялась по методу POST. C метдом GET вроде бы все работало стабильно.

Решение проблемы.

Установка других версий сервера, PHP никак не помогала. Логично: проблема то в SSPI. Говорят что если даунгрейдиться до версии mod_auth_sspi 1.0.3 — то проблема пропадет. Пожалуй это самый правильный совет, друзья.

Однако где-то я нарыл директиву, при добавлении которой в httpd.conf в блоке параметров SSPI — все начинало довольно успешно работать. Даже с версией 1.0.4. А эта волшебная строчка выглядит так:

SSPIPerRequestAuth on

Просто добавьте ее в то место httpd.conf, где вы настраиваете авторизацию этим модулем. Если не поможет — попробуйте поставить версию 1.0.3.

Всем спасибо за внимание :)

P.S. Если кому-то эта информация хоть как-то помогла — напишите хоть что-нибудь в комментариях :)

2 комментария для “Пустая POST форма с использованием SSPI

  1. Тоже вот сделал редактирование формы с сохранением данных через AJAX. IE8 выдавал ошибку при отправке данных. В Opera и Firefox всё хорошо.

    Исправил путем правки
    http_request.setRequestHeader(“Connection”, “close”);
    на
    http_request.setRequestHeader(“Connection”, “keep-alive”);

  2. Спасибо за информацию!!! Тоже формы некорректно отправляли данные (с некоторой задержкой как бы) Три дня лопатил код, думал что дело в нем! Сегодня на маленьком скрипте проверил — и понял что дело в настройках… Сразу же набрел на эту статью! Помогло!!!

Добавить комментарий