Как донести заголовки при редиректе?
Не получается "донести" заголовки из мидлвари до обработчика
func MW(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
redirect := r.FormValue("redirect")
r.Header.Set("redirect", redirect)
redir := "http://somedomain/some/path" //RedirectHF обрабатывает этот роут
// ожидаю, что r внутри Redirect включает в себя заголовок который я установил. Но при попытке получить этот загловок в обработчике дает пустоту
http.Redirect(w, r, redir, http.StatusTemporaryRedirect)
}
}
func RedirectHF(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.Header.Get("redirect")) // здесь пусто.
}
Помогите пожалуйста. Что не так делаю? Как передать заголовки из мидлвари обработчику?
Ответы (1 шт):
Автор решения: Алексей
→ Ссылка
Скорее всего у вас это не получится, так как при редиректе сервер отвечает браузеру "просьбой" перейти по другому адресу. После этого браузер отправляет запрос по новому адресу уже со своим дефолтным заголовком, который нельзя изменить. В этом случае я бы передавал нужную информацию в форме: http://somedomain/some/path?key=value
и в функции RedirectHF
получал значение из формы:
r.ParseForm()
fmt.Println(r.FormValue("key"))
Так можно перенести весь заголовок в форму и потом из формы назад в заголовок.