Как отправить два ответа на один запрос в Голанге? - PullRequest
0 голосов
/ 14 июня 2019

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

ОБРАТИТЕ ВНИМАНИЕ: - Мне нужно отправить имя пользователя и пароль с предоставленным файлом.

Итак, я попытался отправить ответ автору запросов с помощью fmt.Fprintf (), а затем обработать html-файл с помощью http.ServeFile (). Это делает цель, но также дает предупреждение на сервере golang.

ОШИБКА: = "http: лишний ответ. Call_WriteHeader 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:])
}

Ответы [ 2 ]

1 голос
/ 14 июня 2019

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

0 голосов
/ 14 июня 2019

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

Как это:

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

...