Это намеренно. redirect
вызывает перенаправление HTTP, новый запрос будет запущен. Кроме того, передача значений env
осуществляется путем изменения env
, а не response
.
Главный вопрос: что вы подразумеваете под заголовком? Заголовок запроса или заголовок ответа? Из вашего примера, я полагаю, вы имеете в виду заголовок запроса, поэтому response['username'] = username
должно быть request.env['username'] = username
. Затем вы можете заменить redirect '/second'
на request.path_info = '/second'; pass
, чтобы выполнить какое-то внутреннее перенаправление. Если вы не передадите значение другой промежуточной программе / конечной точке Rack, вы также можете сохранить имя пользователя в переменной экземпляра.
get '/first' do
request.path_info = '/second'
pass
end
get '/second' do
puts request.env['HTTP_USERNAME']
"DONE"
end