нельзя устанавливать заголовки после их отправки

Cant Set Headers After They Are Sent



Сегодня, изучая красивую статическую маршрутизацию экспресс-фреймворка, я столкнулся с проблемой:
изображение
Отображение ошибки: невозможно установить заголовки после отправки. Невозможно отправить заголовок, потому что он был отправлен один раз.
При обработке HTTP-запроса сервер сначала выводит заголовок ответа, а затем выводит содержимое тела, а один раз выводит заголовок ответа один раз (например: выполнить res.writeHead () или res.write () или res.end ( )), когда мы пытаемся установить заголовок ответа через res.setHeader () или res.writeHead () (некоторые методы, такие как res.redirect (), будут вызывать res.writeHead ()) Сообщить об ошибке.
Когда я меняю res.send () на res.end (), код может работать успешно

В чем разница между res.send () и res.end ()?

Если данные не возвращаются клиенту с сервера, вы можете использовать res.end
Однако, если на стороне сервера есть данные, возвращаемые клиенту, вы должны использовать res.send вместо res.end (будет сообщено об ошибке)



Отрывок из того, как использовать res.send ():

res.send ([тело | статус], [тело])



То есть контент может быть отправлен напрямую или статус первого параметра и контент второго параметра.



Если контент отправляется напрямую, статус будет автоматически заполнен

③Отправлено содержание:
Пример:
res.send (newBuffer ('крик'))
res.send ({some: ‘json’})
res.send ('немного HTML')
res.send (404, 'Извините, мы не можем найти это!')
res.send (500, {ошибка: 'что-то взорвалось'})
res.send (200)

[1] Первый - отправить двоичный контент. Когда его параметр - Buffer, Content-Type будет установлен на 'application / octet-stream', и это означает, что его суффикс файла (тип файла) равен. Для некоторых типов вы можете просмотреть:
http://www.w3school.com.cn/media/media_mimeref.asp
И это то, что написано в вики
· Приложение / октет-поток (произвольные двоичные данные)
То есть это произвольные двоичные данные. Как его интерпретировать, зависит от реальной ситуации (например, от названия суффикса). Например, это может быть img или видео.



[2] Если строка отправлена, она будет интерпретирована как файл HTML.
Другими словами, Content-Type по умолчанию установлен на text / html:
Например, если вы отправляете сообщение, а затем я res.send ('aaa'), тогда веб-страница перейдет на страницу, содержащую только текст aaa.

[3] Если параметр - Array (массив) или Ojbect (объект), то будет возвращен JSON.