удаляются заголовки ответов HTTP golang
Я не уверен, что это ошибка или как должен работать пакет ответов http.
в этом примере Content-Type
заголовок ответа не будет
// Return the response
w.WriteHeader(http.StatusCreated)
w.Header().Set("Content-Type", "application/json")
w.Write(js)
как бы то ни было, если я переворачиваю порядок установки заголовков, он работает:
// Return the response
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
w.Write(js)
теперь это фактически установит заголовок в application/json
. Является ли такое поведение намеренным?
1 ответов
заголовки могут быть записаны только один раз в ответ, поэтому вы должны установить все заголовки перед их записью. После записи заголовков они отправляются клиенту.
вы должны только позвонить w.WriteHeader(http.StatusCreated)
после того, как вы установили все ваши заголовки.
читайте в спецификации GOLANG, как работает WriteHeader
это правило одинаково для тела после того, как тело написано (запись в ответ буквально отправляет его клиенту), он не может быть возмущен или измененный.