Используйте apache, чтобы удалить URL-параметр и добавить его в качестве настраиваемого заголовка HTTP при перенаправлении.
Допустим, мой браузер выдает запрос http://localhost/accounts?memberUuid=<some uuid>
мне бы хотелось apache2
чтобы получить этот запрос, добавьте пользовательский заголовок HTTP с uuid
в нем раздеть uuid
параметр из URL и перенаправить на http://localhost:9000/accounts
с новым настраиваемым заголовком.
Я полный Apache Noob. Я использовал его только как простой веб-сервер для обслуживания файлов html, css и javascript. Так что я даже не знаю, с чего начать, иначе я бы опубликовал некоторые вещи, которые я до сих пор пробовал.
Это возможно только с apache2? Нужны ли дополнительные инструменты для этого? Спасибо!
редактировать
Это создает впечатление, что я должен иметь возможность добавлять любые заголовки к запросу. Или я неправильно это понимаю? Как бы я использовал это вместе с входящим значением в URL, чтобы отправить нужный мне заголовок?
3 ответа
Это оказалось возможным путем объединения RewriteRule
с Proxy
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)memberUuid=(.*)$
RewriteRule ^/(.*)$ http://127.0.0.1:9000/$1 [E=memberUuid:%2,P]
ProxyPreserveHost On
ProxyPass /excluded !
ProxyPass / http://127.0.0.1:9000/
ProxyPassReverse / http://127.0.0.1:9000/
Header add iv-user "%{memberUuid}e"
RequestHeader set iv-user "%{memberUuid}e"
</VirtualHost>
Это невозможно, как описано. Природа HTTP без сохранения состояния означает, что вы не можете связать текущий ответ с будущим запросом, если не используете такой механизм, как файлы cookie.
Чтобы ответить на ваш отредактированный вопрос о mod_headers
, вы, вероятно, недоразумение. Модуль позволяет добавлять дополнительные заголовки запроса на стороне сервера. Вы не можете принудительно отправлять клиентам определенные заголовки, если у вас нет правила связи по HTTP-протоколу с ч / б клиентами и сервером.
Возможно, вы захотите пойти с Cookie. ты можешь использовать Set-Cookie
заголовок. Я не уверен на 100%, можете ли вы использовать cookie-файлы на сайтах, работающих на разных портах, но я подумал, что они могут работать, если имя домена совпадает. О куки даже википедия объясняет очень хорошо.
http://en.wikipedia.org/wiki/HTTP_cookie
РЕДАКТИРОВАТЬ: Я лично часто использую php, поэтому вот очень простой пример для установки Cookie и перенаправления в PHP:
// set cookie value
setcookie('uuid', $_GET['memberUuid'], time() + 3600);
// redirect
header('Location: http://localhost:9000/accounts');
exit;
и вы можете получить значение cookie по $_COOKIE['uuid']
на локальном хосте:9000
РЕДАКТИРОВАТЬ 2:
Если вы настраиваете только на apache, mod_headers не сможет выполнить эту работу, поскольку он не обрабатывает переменные GET, насколько я знаю. Вместо этого mod_rewrite может работать.
RewriteEngine On
RewriteRule ^/accounts\?memberUuid=(.*) http://localhost:9000/accounts [R,CO=uuid:$1:localhost:1440:/]
Я не проверял это, но я знаю, что mod_rewrite способен извлекать значения из вашего URL, устанавливать файлы cookie и перенаправлять.