Nodejs에서 setHeader와 writeHead의 차이점은 무엇인가요? 다음 기사에서는 setHeader와 writeHead를 비교하고 차이점에 대해 설명하겠습니다. 모든 사람에게 도움이 되기를 바랍니다.
오늘 Node
Node
的时候发现Node/http
中的setHeader和writeHead很相似,都可以设置响应头部,我们来详细的说说吧!
参数
response.setHeader(name, value)复制代码
http.ServerResponse
返回响应对象作用
为响应头部设置单个属性。
注意
TypeError
示例
reponse.setHeader('Content-Type', 'text/html')
reponse.setHeader('Set-Cookie', ['type=ninja', 'language=javascript'])
重复设置一个属性
// 返回 content-type = text/html1 reponse.setHeader('Content-Type', 'text/html') reponse.setHeader('Content-Type', 'text/html1')
参数
response.writeHead(statusCode, [statusMessage], [headers])
statusCode http状态码
statusMessage 状态信息(可选)
headers | 属性对象或数组(可选)
返回 http.ServerResponse
返回响应对象
作用
和setHeader
作用相同
注意
可以设置多个属性,setHeader只能设置一个
只能调用一次
必须在response.end()
之前调用
设置包含无效字符的属性字段名称或值将导致抛出 TypeError
示例
因为writeHead返回的是一个ServerResponse对象,我们可以进行链式调用
const body = 'hello world'; response .writeHead(200, { 'Content-Length': Buffer.byteLength(body), 'Content-Type': 'text/plain' }) .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('ok'); });
writeHead
的优先级比 setHeader
高,并且writeHead只能调用一次,所以在调用时,先考虑好哪些头不常改变后,再调用writeHead
如果已经调用了setHeader
设置标头,那么他会传给writeHead
合并
如果调用了此方法,且还没调用 response.setHeader()
),则会直接将提供的标头值写入网络通道且内部不缓存。在标头上 response.getHeader()
) 不会产生预期的结果。 如果需要逐步填充标头并在未来进行潜在的检索和修改,则改用 response.setHeader()
를 배우면서 Node/http
의
value 속성 값
http.ServerResponse
응답 객체 반환TypeError
🎜🎜🎜🎜Example🎜🎜rrreeerrreee🎜🎜반복적으로 속성 설정🎜🎜rrreee🎜🎜🎜🎜writeHead🎜🎜🎜🎜Parameters🎜🎜rrreee🎜🎜🎜상태 코드 http 상태 코드 🎜🎜🎜🎜statusMessage 상태 메시지(선택 사항) 🎜🎜🎜🎜headers | 속성 객체 또는 배열(선택 사항) 🎜🎜🎜🎜 http.ServerResponse
를 반환합니다. 응답 객체를 반환합니다. 🎜🎜🎜🎜🎜🎜🎜function🎜🎜🎜and setHeaderfunction 동일 🎜🎜🎜 🎜🎜🎜🎜🎜은 여러 속성을 설정할 수 있지만 setHeader는 하나만 설정할 수 있습니다. 🎜🎜🎜🎜는 한 번만 호출할 수 있습니다. 🎜🎜🎜🎜은 <code>response.end() 전에 호출해야 합니다.
🎜 🎜🎜🎜잘못된 문자가 포함된 속성 필드 이름이나 값을 설정하면 TypeError
가 발생합니다🎜🎜🎜🎜🎜Example🎜🎜🎜writeHead가 ServerResponse 개체를 반환하므로 다음을 수행할 수 있습니다. 체인 호출하기🎜 rrreee🎜여기서 콘텐츠 길이는 문자가 아닌 바이트 단위입니다. Buffer.byteLength()는 텍스트의 길이를 결정하는 데 사용됩니다. 🎜🎜Nodejs는 Content-Length가 전송된 본문의 길이와 일치하는지 확인하지 않습니다. 🎜🎜🎜setHeader와 writeHead를 동시에 사용하세요🎜🎜rrreee🎜writeHead
가 setHeader
및 writeHead는 한 번만 호출할 수 있으므로 호출 시 자주 변경되지 않는 헤더를 먼저 고려한 다음 writeHead
🎜🎜If setHeader
를 호출하세요. 헤더를 설정하기 위해 호출된 경우 병합을 위해 writeHead
로 전달됩니다. 이 메서드가 호출되고 response.setHeader()
)가 호출되지 않은 경우 제공된 헤더 값은 네트워크 채널에 직접 기록되며 내부적으로 캐시되지 않습니다. 헤더의 response.getHeader()
)가 예상한 결과를 생성하지 않습니다. 헤더를 점진적으로 채워야 하고 나중에 잠재적으로 검색 및 수정되어야 하는 경우 response.setHeader()
를 대신 사용하세요. 🎜🎜🎜요약🎜🎜🎜🎜🎜setHeader는 헤더를 하나씩만 설정할 수 있고, writeHead는 한 번에 여러 개를 설정할 수 있습니다.🎜🎜🎜🎜setHeader는 반복적으로 호출할 수 있고, writeHead는 한 번만 호출할 수 있습니다.🎜🎜🎜🎜setHeader와 writeHead는 동시에 setHeader는 writeHead로 병합되고 writeHead는 높은 우선순위를 갖습니다🎜🎜🎜🎜writeHead는 상태 코드 및 상태 정보를 설정할 수 있으며, setHeader는 설정할 수 없으며 헤더만 설정할 수 있습니다🎜🎜🎜🎜더 많은 노드 관련 지식을 확인하세요. 방문: 🎜nodejs 튜토리얼🎜! 🎜
위 내용은 Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!