Назад | Перейти на главную страницу

Используйте apache для удаления параметра URL и добавления его в качестве настраиваемого HTTP-заголовка при перенаправлении

Допустим, мой браузер отправляет запрос на 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.