307 리다이렉트
307 Redirect(307 리다이렉트)는 웹 페이지의 URL이 임시로 다른 주소로 이동했음을 브라우저와 검색 엔진에 알리는 HTTP 상태 코드(307 Temporary Redirect)입니다. 302 리다이렉트와 유사하지만, 원래 요청의 HTTP 메서드(GET, POST 등)와 본문(body)을 반드시 그대로 유지한다는 점이 핵심 차이입니다.
307 Redirect(307 리다이렉트)는 웹 페이지의 URL이 임시로 다른 주소로 이동했음을 브라우저와 검색 엔진에 알리는 HTTP 상태 코드(307 Temporary Redirect)입니다. 302 리다이렉트와 유사하지만, 원래 요청의 HTTP 메서드(GET, POST 등)와 본문(body)을 반드시 그대로 유지한다는 점이 핵심 차이입니다.
왜 중요한가
307 리다이렉트는 임시 이동임을 명확하게 전달하면서도 요청 메서드를 보존하기 때문에, POST 요청이 포함된 폼 제출이나 API 호출에서 데이터 손실을 방지합니다. 검색 엔진은 307 응답을 받으면 원래 URL을 인덱스에 그대로 유지하고, 링크 자산(link equity)을 새 URL로 이전하지 않습니다. 즉, 임시 리다이렉트가 해제되면 기존 URL의 SEO 가치가 온전히 보존됩니다. 다만 307 리다이렉트를 장기간 유지하면 검색 엔진이 반복적으로 원래 URL을 방문해야 하므로 크롤링 예산(crawl budget)이 낭비될 수 있습니다. 임시 상황이 영구적으로 바뀌었다면 301이나 308 리다이렉트로 전환하는 것이 바람직합니다.
302와의 차이
| 구분 | 307 (Temporary Redirect) | 302 (Found) |
|---|---|---|
| HTTP 메서드 유지 | 반드시 유지 (POST → POST) | 메서드 변경 가능 (POST → GET으로 바뀔 수 있음) |
| 표준 정의 | HTTP/1.1에서 명확히 규정 | HTTP/1.0부터 존재하나 메서드 처리가 모호 |
| 검색 인덱스 | 원래 URL 유지 | 원래 URL 유지 |
| 링크 자산 이전 | 이전하지 않음 | 이전하지 않음 |
| 주요 용도 | POST 요청 보존이 필요한 임시 이동 | 일반적인 임시 이동 |
302 리다이렉트는 오래된 표준에서 메서드 변경 여부가 명확하지 않아, 일부 브라우저가 POST 요청을 GET으로 변환하는 문제가 있었습니다. 307은 이러한 모호함을 제거하기 위해 HTTP/1.1 스펙에서 도입된 상태 코드입니다. POST 데이터가 손실되면 안 되는 상황에서는 302 대신 307을 사용하는 것이 안전합니다.
사용 시나리오
- 서버 점검 또는 유지보수: 일시적으로 다른 서버나 안내 페이지로 트래픽을 보내야 할 때 307을 사용하면, 점검이 끝난 후 원래 URL로 자연스럽게 복귀할 수 있습니다.
- A/B 테스트: 특정 사용자 그룹을 임시로 다른 버전의 페이지로 보내면서, 원래 URL의 검색 순위를 유지해야 하는 경우에 적합합니다.
- HSTS(HTTP Strict Transport Security) 적용: 브라우저가 HTTP 요청을 HTTPS로 내부 리다이렉트할 때 307 상태 코드를 사용합니다. 이는 브라우저 내부 동작이므로 별도의 서버 설정이 필요하지 않습니다.
- POST 요청 임시 전환: 폼 제출이나 결제 처리 등 POST 메서드를 유지해야 하는 요청을 임시로 다른 엔드포인트로 전달할 때 307이 필수적입니다.
관련 인블로그 게시물
inblog에서 활용하기
inblog 대시보드에서 임시 리다이렉트는 307 상태 코드로 설정됩니다.