웹 기술 기초

브라우저가 이전에 받은 이미지를, 그때의 응답에 붙어 있던 ETag 값을 If-None-Match 헤더에 넣어 다시 요청했다. 서버의 이미지가 바뀌지 않았을 때 서버의 응답으로 올바른 것은?

  1. A200 OK를 돌려주고, 이전에 보냈을 때와 같은 내용이라도 이미지 본문을 다시 전부 보낸다
  2. B304 Not Modified를 돌려주고 본문은 보내지 않으며, 브라우저는 저장해 둔 이미지를 사용한다
  3. C404 Not Found를 돌려주어, 브라우저에 저장된 오래된 이미지를 지우고 다시 가져오게 한다
정답과 해설 보기

정답: B. 304 Not Modified를 돌려주고 본문은 보내지 않으며, 브라우저는 저장해 둔 이미지를 사용한다

ETag는 리소스의 특정 버전을 나타내는 식별자입니다. 브라우저는 ETag를 If-None-Match에 넣어 '이 버전에서 바뀌었으면 보내 달라'는 조건부 요청을 보내고, 바뀌지 않았으면 서버는 본문이 없는 304 Not Modified를 돌려줍니다. 이렇게 하면 확인을 위한 1왕복만으로 끝나고, 이미지 데이터를 다시 보내지 않아도 됩니다. 바뀌었으면 200 OK로 새로운 본문과 새로운 ETag를 돌려줍니다. Cache-Control의 max-age로 정한 기간 안에는 브라우저가 이 확인조차 하지 않고 저장해 둔 것을 사용합니다.

이 분야 연습하기 분야로 돌아가기

웹 기술 기초의 다른 문제

  1. HTTP/2와 HTTP/3에 대한 설명으로 올바른 것은?
  2. RTT가 40 ms인 웹 서버에서 HTML 하나와 거기서 참조하는 이미지 4개를 하나씩 차례로 가져온다. TCP 연결 설정에 1왕복, 각 요청과 응답에 1왕복이 걸린다고 하고, 데이터 전송 시간, 서버의 처리 시간, TLS, 연결 종료는 고려하지 않는다. 객체마다 새로운 TCP 연결을 여는 경우와 하나의 TCP 연결을 재사용하는 지속 연결의 경우에 걸리는 시간의 차이는?
  3. HTTP는 무상태(stateless) 프로토콜이다. 이것과, 웹사이트에서 로그인한 상태를 유지하는 일반적인 방법에 대한 설명으로 올바른 것은?
  4. 위의 헤더로 설정된 Cookie에 대한 설명으로 올바른 것은?
  5. 브라우저의 localStorage와 Cookie의 차이로 올바른 것은?