Как отправить два ответа на один запрос?

У меня есть HTTP-сервер в Go, в котором, когда клиент запрашивает любой файл, который я использую, используя http.ServeFile, Мне нужно также отправить имя пользователя и пароль с этим файлом. Для этого я делаю это, сначала отправив ответ с fmt.Fprintf а потом я делаю http.ServeFile, Так что это решает цель, но выдает предупреждение "http: лишний ответ. CallEWeader Call". Как решить это.

Обратите внимание: мне нужно отправить имя пользователя и пароль с обслуживаемым файлом.

if r.URL.Path == "/html/home.html" {
   fmt.Fprintf(w, `<!DOCTYPE HTML>
        <html><div><input id="username" type="hidden" readonly value="%s" /> 
        <br><input id="password" type="hidden" readonly value="%s" /><div>`, 
        name, password)
   http.ServeFile(w, r, r.URL.Path[1:])
}

3 ответа

Решение

ОШИБКА:= "http: лишний ответ. Call_WriteHeader". Эта ошибка появляется, поскольку вы не можете отправить два ответа на один запрос.

Лучший способ достичь того, что вы пытаетесь сделать, - это использовать куки. Отправьте данные в виде куки и бинго. Ваша работа будет выполнена без ошибок / предупреждений.

expiration := time.Now().Add(time.Second * time.Duration(1000))
cookie := http.Cookie{Name: "Token", Value: "username", Expires: expiration}
http.SetCookie(w, &cookie)
usercookie := http.Cookie{Name: "usercookie", Value: "username", Expires: expiration}
http.SetCookie(w, &usercookie)
http.ServeFile(w, r, r.URL.Path[1:])

Этот код создаст cookie, и позже вы сможете получить к нему доступ. Это правильный способ достижения того, что вы хотите.

Отправка имени пользователя и пароля является ответом, передача файла также является ответом. Вы не можете отправить два отдельных ответа одновременно. Вы можете отправить объект как ответ, содержащий имя пользователя, пароль и URL-адрес файла на сервере.

Вы просто отправляете только один ответ, но мы можем объединить составные ответы в один с некоторым шаблоном.

Нравится:

{
  "username": "xxxx",
  "password": "xxxx",
  "file": "file uri"
}

Другие вопросы по тегам