304 Not Modified를 HEAD에 대한 응답으로 사용할 때?
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
강의 커리큘럼 후반부에 조건부 요청에 관한 내용이 있는 것 같은데 아직 안 본 상태에서 쓴 질문입니다.
학습 자료 26페이지를 보면
304 Not Modified을 조건부 GET, HEAD 요청 시 사용한다고 나와 있습니다.
클라이언트가 조건부 GET을 보내면 서버는 그 객체가 수정되었다면 객체를 보내고, 수정되지 않았다면 304 Not Modified를 보내는 것으로 알고 있습니다.
그런데 클라이언트가 HEAD를 보낼 때도 서버가 304 Not Modified를 보내나요? 그 상황이 어떤 상황인지 궁금합니다.
이 경우엔 HEAD도 조건부 GET처럼 If-Modified-Since 헤더를 포함하고 있어야 하나요? 이런 경우 조건부 HEAD라고 하나요..?
원래도 HEAD에 대한 서버의 응답은 body에 객체를 포함하지 않는 거로 아는데, 그럼 조건부 HEAD(?)를 보낼 땐, 서버에서 객체가 수정되었는지, 수정되지 않았는지에 따라 어떻게 응답할지 궁금합니다. 수정되지 않았으면 304를 보내고, 수정되었으면.. 304도 아니고 객체도 포함되지 않은 패킷으로 응답하나요? HEAD에 대한 응답은 객체를 포함하지 않으니깐..?
답변 1
1
안녕하세요 11 1 님, 인프런 AI 인턴이에요.
질문 내용에 대한 답변을 드리겠습니다:
HEAD 요청에 대한 응답으로 304 Not Modified을 사용할 수 있습니다. 클라이언트가 조건부 HEAD 요청을 보낼 경우, 서버는 If-Modified-Since 헤더 값을 확인하여 객체가 수정되었는지 여부를 판단합니다. 수정되지 않았을 경우 304 Not Modified 응답을 보내고, 수정된 경우에는 200 OK 응답을 보내는 것이 일반적입니다.
HEAD 요청은 응답으로 객체를 포함하지 않는 것이 맞습니다. 따라서 클라이언트가 조건부 HEAD 요청을 보낼 때, 객체가 수정되지 않았으면 304 Not Modified를 보내고, 수정되었으면 304 Not Modified가 아니고 응답에 객체를 포함하지 않은 패킷으로 응답합니다. HEAD 요청의 목적은 객체를 받지 않고 응답 헤더만 확인하는 것이기 때문에, 객체의 수정 여부에 따라 응답하는 방식이 다를 수 있습니다.
자세한 내용과 코드 예시는 해당 강의 커리큘럼을 확인해보시길 권장드립니다. 감사합니다.
캐시무효화시 그냥 no-store만 넣어되지 않나요?
0
71
2
API의 헤더와 바디에 대한 문의 입니다.
0
70
2
수정폼과 수정
0
66
1
쿠키에 대해 질문드려요!
0
88
2
서버에서 캐시 검증 헤더를 직접 처리해야 하나요?
0
86
1
http api get, post 멱등
0
40
1
컬렉션의 개념
0
49
1
시작라인에 들어가는 요청 대상 경로는 상대 경로 아닌가요?
0
54
1
PATCH 는 PUT처럼 멱등이여야 하지 않나요?
0
81
1
리소스 질문드립니다
0
56
1
IP 패킷 질문입니다.
0
59
1
html from, http api
0
75
2
브라우저 캐시가 60초 유효하다는게 무슨 뜻일까요
0
120
1
stateless 무상태 예제가 생각났는데. 저가 생각 한게 맞는지 궁금합니다.
0
99
1
URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?
0
141
1
host와 port
0
106
1
tcp/ip는 연결을 유지? 아니면 유지하지 않음?
0
145
1
다음 강의 커리큘럼 질문!!
0
130
2
캐시 개념에 대해서 설명하시지는 않으시는건가요?
0
113
1
클라이언트가 patch, delete 요청 시 알아야 하는 url
0
91
1
html form 형태 전송시 new, edit 등 컨트롤 리소스를 사용하는 이유
0
168
2
비 연결성(connectionless) 강의에서 질문입니다~
0
140
1
PATCH를 사용하지 못할 때 왜 POST?
0
162
2
협상과 우선순위3 질문드립니다.
1
130
1





