Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

青灯夜游
풀어 주다: 2022-03-23 20:04:10
앞으로
2553명이 탐색했습니다.

Nodejs에서 setHeader와 writeHead의 차이점은 무엇인가요? 다음 기사에서는 setHeader와 writeHead를 비교하고 차이점에 대해 설명하겠습니다. 모든 사람에게 도움이 되기를 바랍니다.

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

오늘 NodeNode的时候发现Node/http中的setHeaderwriteHead很相似,都可以设置响应头部,我们来详细的说说吧!

setHeader

参数

response.setHeader(name, value)复制代码
로그인 후 복사
  • 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')
로그인 후 복사

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

writeHead

参数

response.writeHead(statusCode, [statusMessage], [headers])
로그인 후 복사
  • statusCode http状态码

  • statusMessage 状态信息(可选)

  • headers | 属性对象或数组(可选)

  • 返回 http.ServerResponse 返回响应对象

Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.

作用

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和已经传输的正文长度是否一致

同时使用setHeader和writeHead

// 返回 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

setHeader

writeHead가 매우 유사하고 둘 다 설정할 수 있다는 것을 알았습니다. 응답 헤더에 대해 자세히 이야기해 보겠습니다.

  • setHeader

  • Parameters

    rrreee
    • name Attribute
    • value 속성 값

    • Return http.ServerResponse 응답 객체 반환
    • Function

    은 응답 헤더 개별 속성을 설정합니다.

    🎜참고🎜🎜
      🎜속성은 하나씩만 설정할 수 있습니다.🎜🎜
        🎜속성을 반복적으로 설정하면 이전 설정이 대체됩니다.🎜🎜
          🎜잘못된 문자가 포함된 속성 필드 이름 또는 값을 설정하면 TypeError🎜🎜🎜🎜Example🎜🎜rrreeerrreee🎜🎜반복적으로 속성 설정🎜🎜rrreee🎜Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.🎜🎜🎜writeHead🎜🎜🎜🎜Parameters🎜🎜rrreee🎜🎜🎜상태 코드 http 상태 코드 🎜🎜🎜🎜statusMessage 상태 메시지(선택 사항) 🎜🎜🎜🎜headers | 속성 객체 또는 배열(선택 사항) 🎜🎜🎜🎜 http.ServerResponse를 반환합니다. 응답 객체를 반환합니다. 🎜🎜🎜🎜Node의 setHeader와 writeHead를 간략하게 비교하고 차이점에 대해 이야기해 보세요.🎜🎜🎜function🎜🎜🎜and setHeaderfunction 동일 🎜🎜🎜 🎜🎜🎜🎜🎜은 여러 속성을 설정할 수 있지만 setHeader는 하나만 설정할 수 있습니다. 🎜🎜🎜🎜는 한 번만 호출할 수 있습니다. 🎜🎜🎜🎜은 <code>response.end() 전에 호출해야 합니다. 🎜 🎜🎜🎜잘못된 문자가 포함된 속성 필드 이름이나 값을 설정하면 TypeError가 발생합니다🎜🎜🎜🎜🎜Example🎜🎜🎜writeHead가 ServerResponse 개체를 반환하므로 다음을 수행할 수 있습니다. 체인 호출하기🎜 rrreee🎜여기서 콘텐츠 길이는 문자가 아닌 바이트 단위입니다. Buffer.byteLength()는 텍스트의 길이를 결정하는 데 사용됩니다. 🎜🎜Nodejs는 Content-Length가 전송된 본문의 길이와 일치하는지 확인하지 않습니다. 🎜🎜🎜setHeader와 writeHead를 동시에 사용하세요🎜🎜rrreee🎜writeHeadsetHeader 및 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:juejin.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿