Проверка входящего запроса на основе заголовка запроса на HTTP-сервере Apache - PullRequest
4 голосов
/ 10 декабря 2011

У нас есть веб-приложение (JQuery и Spring), работающее на сервере приложений weblogic.Перед сервером приложений находится http-сервер apache.Все входящие запросы будут поступать через веб-сервер и достигать сервера приложений.

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

Я хочу знать, можем ли мы реализовать эту логику на http-сервере apache.Пожалуйста, совет.

1 Ответ

2 голосов
/ 16 января 2012

Вы можете сделать это с помощью mod_rewrite.Вы не указали точную настройку, но если у вас есть конфигурация типа mod_proxy, вы просто хотите убедиться, что перезаписи не влияют на прохождение нормального трафика.В общем смысле в вашей конфигурации Apache вы должны:

  • Включить перезапись
  • Проверить условие
  • Применить правило перезаписи на основе условий

Чтобы привести действительно простой пример, если вы искали ключ в строке запроса и запрещали доступ (403), если его не было, вы бы сделали что-то вроде этого:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !somekey
RewriteRule ^.*$ - [F,L]

Это может быть настолько сложным, насколько вы действительно хотите, вы можете связать условия вместе (неявное И или явное или с помощью флага [ИЛИ]), и вы можете обслуживать реальную страницу, а не запрещенное сообщение.

Как всегда, сделайте резервную копию вашей конфигурации перед тем, как возиться с ней, и, возможно, было бы неплохо проверить это с помощью .htaccess (хотя по соображениям производительности лучше перенести его в фактическую конфигурацию для производственных нагрузок).

Документация по переписыванию также является отличным ресурсом:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

Это действительно хорошая документация.Для некоторых указателей - вы захотите посмотреть флаги ([L] = последний; [P] = обрабатывать как прокси-запрос; [F] = запрещено и т. Д.), И вам понадобится кто-то, обычно знакомый с синтаксисом регулярных выражений

...