Location
응답 헤더 Routing

개요

Location은 리다이렉트 대상 URL이나 새로 생성된 리소스의 URL을 가리키는 응답 헤더입니다. 3xx 응답에서는 브라우저가 이 URL로 자동 이동하고, 201 Created 응답에서는 방금 만들어진 리소스의 위치를 알려줍니다.

값에는 절대 URL과 상대 URL을 모두 쓸 수 있으며, 상대 URL은 요청 URL을 기준으로 해석됩니다.

자세히

리다이렉트 상태 코드마다 의미가 다릅니다. 301(영구)·308은 URL이 영구 이동했음을, 302·307은 임시 이동을 뜻합니다. 핵심 차이는 메서드 보존 여부입니다. 301·302·303은 브라우저가 후속 요청을 GET으로 바꿀 수 있지만(특히 303은 항상 GET), 307·308은 원래 메서드와 본문을 그대로 유지합니다. POST를 리다이렉트하면서 메서드를 지키고 싶으면 307/308을 쓰세요.

POST 후 결과 페이지로 보낼 때는 303 See Other + Location 패턴(PRG, Post/Redirect/Get)을 씁니다. 사용자가 새로고침해도 폼이 재전송되지 않아 중복 제출을 막습니다.

201 Created 응답에서는 Location이 리다이렉트가 아니라 생성된 리소스의 정규 URL을 뜻합니다. 클라이언트는 이 URL로 새 리소스를 조회할 수 있습니다.

문법

Location: <absolute-or-relative-URL>

e.g. Location: https://example.com/users/42

실무 참고

관련 헤더

Content-LocationRefreshReferer

관련 상태코드

스펙 근거