Допустим, мой браузер отправляет запрос на http://localhost/accounts?memberUuid=<some uuid>
мне бы хотелось apache2
чтобы получить этот запрос, добавьте собственный HTTP-заголовок с uuid
в нем раздеть uuid
param из URL-адреса и перенаправить на http://localhost:9000/accounts
с новым настраиваемым заголовком.
Я полный апач-нуб. Я использовал его только как простой веб-сервер для обслуживания файлов html, css и javascript. Так что я даже не знаю, с чего начать, иначе я бы опубликовал кое-что, что уже пробовал.
Возможно ли это только с apache2? Нужны ли мне для этого дополнительные инструменты? Спасибо!
редактировать
это это выглядит так, будто я могу добавить любые заголовки в запрос. Или я это неправильно понимаю? Как мне использовать это вместе с входящим значением URL-адреса для отправки нужного мне заголовка?
Это оказалось возможным, объединив 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>
Чтобы ответить на ваш отредактированный вопрос о mod_headers
, Вы наверное недоразумение. Модуль позволяет добавлять дополнительные заголовки запросов на стороне сервера. Вы не можете заставить клиентов свободно отправлять определенные заголовки, если у вас нет правила связи по протоколу HTTP, ч / б клиентам и серверу.
Возможно, вы захотите использовать Cookie. ты можешь использовать Set-Cookie
заголовок. Я не уверен на 100%, что вы можете использовать файлы cookie на сайтах, работающих на другом порту, но я думал, что это может работать, если доменное имя совпадает. О 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 и перенаправлять.
Это невозможно как описано. Природа HTTP без сохранения состояния означает, что вы не можете связать текущий ответ с будущим запросом, если не используете такой механизм, как файлы cookie.