Перенаправление PHP с использованием заголовков () и HTTP-запросов [дубликаты]

Я работаю над веб-приложением, которое может аутентифицировать пользователей, используя два поля заголовков HTTP-запроса: user и role.

Используя сервис SSO компании, я хотел бы добиться следующего:

user --> SSO --> header(location: http://app, \
                        user    : username,   | --> application
                        role    : rolename)   /

По сути, я хотел бы перенаправить пользователя на application со страницы SSO. Страница SSO представляет собой небольшой PHP-скрипт, который находит правильное имя пользователя и роль, а затем выполняет вызовы функции header():

  header('user: username');
  header('role: rolename');
  header('location: http://application/login');

Проблема в том, что поля user и role, кажется, удаляются во время перенаправления (я использую Chrome с расширением заголовков HTTP для мониторинга процесса).

Кроме того, когда я устанавливаю заголовки вручную (используя расширение Chrome для изменения заголовков), все работает нормально. Поэтому я предполагаю, что проблема не в веб-приложении.

И последнее: я не разработчик веб-приложения, которое является коммерческим продуктом. Таким образом, у меня нет возможности изменить само приложение.

Заранее большое спасибо за любую помощь :)


person JPC    schedule 17.08.2015    source источник


Ответы (2)


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

Единственными «постоянными» заголовками являются файлы cookie, что и является их целью. Если это невозможно, например, из-за различий в доменах, вам придется передать информацию в качестве параметров запроса в URL-адресе, на который вы перенаправляетесь.

В качестве альтернативы вам нужно делать все через AJAX, где вы можете сами контролировать отправленные заголовки с помощью Javascript.

person deceze♦    schedule 17.08.2015

Невозможно сохранить заголовки при перенаправлении. См. этот вопрос на SO:

Как пересылать заголовки при перенаправлении HTTP

person Pavel Lint    schedule 17.08.2015