컴퓨터 공학 & 통신

[개념 정리/네트워크] HTTP 헤더

왈왈디 2023. 7. 14. 13:55
728x90

사용자가 HTTP 요청을 하면

client와 server는 헤더(header)바디(body)를 주고 받는다.

 

바디(Body)

바디본문이라고 할 수 있으며,

서버에서 보내고자 하는 컨텐츠 본문인 JSON, html, image 등이 담긴다.

 

헤더(Header)

헤더바디를 설명하는 정보를 포함하여 여러가지 정보가 담긴 정보 묶음이다.

헤더는 콜론(:)으로 구별되는 key:value 형태로 설정된다.

 

HTTP 요청 시 3가지일반 헤더, 요청 헤더, 응답 헤더가 자동으로 생성된다.

이 중 클라이언트가 설정하는 헤더가 요청 헤더, 서버에서 설정하는 헤더가 응답 헤더이다.

 

요청 헤더(Request Header)

요청 헤더클라이언트가 서버에 요청할 때 클라이언트가 설정하는, 또는 자동으로 설정되는 헤더를 말한다.

요청 헤더에는 요청 메서드, 클라이언트 OS브라우저 정보 등이 담긴다.

 

응답 헤더(Response Header)

응답 헤더서버가 클라이언트에게 응답을 보낼 때 설정하는, 또는 자동으로 설정되는 헤더를 말한다.

응답 헤더에는 서버의 소프트웨어 정보 등이 담긴다.

예를 들어, nginx를 프록시 서버로 두었다면 그러한 정보가 표기된다.

 

하지만 대부분의 서버는 해커가 서버에서 어떤 소프트웨어가 사용되고 있는지 알기 어렵게 하기 위해

서버 정보를 숨긴다.

자세하게 표기하지 않는다.

 

아래는 node.js로 응답 헤더를 설정하는 예시 코드이다.

const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
    res.setHeader('Content-Type', 'text/plain; charset=utf-8');
    res.setHeader('welcoming', "Welcome to Walwaldev Blog!");
    res.end('안녕하세요\n');
});
server.listen(port, hostname, () => {
    console.log('Server is running at http://${hostname}:${port}/');
});

위와 같이 설정하면 응답 헤더에

  • Content-Type: text/plain; charset=utf-8
  • wecoming: Welcome to Walwaldev Blog!

항목이 추가된다.

 

HTTP 헤더는 유연하게 설계되어 이렇게 커스텀이 가능하지만,

일반적으로는 지정된 key에 value를 담아 헤더를 설정한다.

예를 들어, 쿠키를 설정할 때는 요청 헤더에는 Cookie라는 key에, 

응답 헤더에는 Set-cookie라는 key에 쿠키를 담아 설정한다.

 

참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

728x90