Как быстро начать работу с VUE3.0: приступайте к обучению.
Сегодня, изучая Node
я обнаружил , что setHeader и writeHead в Node/http
очень похожи. Оба они могут устанавливать заголовки ответов.
Параметры
response.setHeader(name, value)Копировать кодовое
http.ServerResponse
возвращает объект ответаи
устанавливает один атрибут для заголовка ответа.
Обратите внимание, что
TypeError
(
'Content-Type', 'text/html')
response. setHeader('Set-Cookie', ['type=ninja', 'language=javascript'])
повторно устанавливает атрибут
// возвращает content-type = text/html1 response.setHeader('Content-Type', 'text/html') response.setHeader('Content-Type', 'text/html1')
параметр
response.writeHead(statusCode, [statusMessage], [headers])
statusCode http код состояния
statusMessage сообщение о состоянии (необязательно)
заголовки атрибута объекта или массива (необязательно)
return http.ServerResponse
возвращает объект ответа
Функция
аналогична функции setHeader
Обратите внимание
,
что можно задать несколько свойств. setHeader может быть задан только один раз
response.end()
только один раз.
символы вызовут выдачу TypeError
.
Пример
, потому что writeHead возвращает. Это объект ServerResponse, мы можем выполнять цепные вызовы
const body = 'hello world'; ответ .writeHead(200, { «Длина контента»: Buffer.byteLength(body), «Тип контента»: «текст/обычный» }) .end(body);
Content-Length здесь указывается в байтах, а не в символах. Buffer.byteLength() используется для определения длины текста.
Nodejs не будет проверять, соответствует ли Content-Length длине передаваемого текста.
// Возвращаем content-type = text/plain. const server = http.createServer((req, res) => { res.setHeader('Content-Type', 'text/html'); res.setHeader('X-Foo', 'bar'); res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('ок'); });
writeHead
имеет более высокий приоритет, чем setHeader
, и writeHead можно вызвать только один раз, поэтому при вызове сначала учитывайте, какие заголовки меняются не часто, а затем вызывайте writeHead
Если setHeader
был вызван для установки заголовка, то он это сделает
передайте его в слияние writeHead
Если этот метод вызывается, а response.setHeader()
не был вызван), предоставленное значение заголовка будет записано непосредственно в сетевой канал и не будет кэшироваться внутри. response.getHeader()
) в заголовке не дает ожидаемых результатов. Если заголовок необходимо заполнять постепенно и потенциально извлекать и изменять в будущем, используйте вместо него response.setHeader()
.
setHeader может устанавливать заголовки только один за другим, writeHead может устанавливать множество
setHeader одновременно и может вызываться повторно. writeHead можно вызывать только один раз, а
setHeader и writeHead появляются одновременно, и setHeader будет объединен в writeHead. writeHead имеет высокий приоритет.
writeHead может устанавливать коды состояния и информацию о состоянии, setHeader не может быть установлен, можно установить только заголовок.