사용자가 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 지식의 정석 - 큰돌'
'컴퓨터 공학 & 통신' 카테고리의 다른 글
[개념 정리/네트워크] HTTPS와 TLS - 암호화 (0) | 2023.07.14 |
---|---|
[개념 정리/네트워크] HTTP 버전 1.0부터 3까지 변화 과정 (0) | 2023.07.14 |
[개념 정리/네트워크] 공인IP VS 사설IP, NAT (0) | 2023.07.13 |
[개념 정리/네트워크] IP주소 체계 - 클래스풀 VS 클래스리스 (0) | 2023.07.13 |
[개념 정리/네트워크] IPv4 VS IPv6 비교 정리 (0) | 2023.07.12 |