DNS RobotDNS Propagation Checker
홈DNS 조회WHOISIP 조회SSL
DNS RobotDNS Propagation Checker

차세대 DNS 검사 도구

개인정보 보호정책이용약관소개블로그문의

DNS 도구

DNS 조회도메인에서 IP로NS 조회MX 조회CNAME 조회모두 보기

이메일 도구

SPF 레코드 확인DMARC 확인DKIM 확인SMTP 테스트 도구이메일 헤더 분석모두 보기

웹사이트 도구

WHOIS 조회도메인 가용성 확인서브도메인 검색CMS 감지기링크 분석모두 보기

네트워크 도구

Ping 도구트레이스라우트포트 확인HTTP 헤더 확인SSL 인증서 확인모두 보기

IP 도구

IP 조회내 IP 주소 확인IP 블랙리스트 확인IP에서 호스트명으로ASN 조회모두 보기

유틸리티 도구

QR 코드 스캐너QR 코드 생성기UPI QR Code GeneratorWiFi QR Code Generator모스 부호 변환기모두 보기
© 2026 DNS Robot. 개발: ❤ Shaik Brothers
모든 시스템 정상 운영 중
Made with
홈/블로그/HTTP 302 상태 코드(302 Found): 의미와 사용 시점

HTTP 302 상태 코드(302 Found): 의미와 사용 시점

Shaik Vahid2026년 4월 26일9 분 소요
HTTP 302 상태 코드 인포그래픽 — Location 헤더로 임시 리다이렉트 흐름과 301/302/307 비교
HTTP 302 상태 코드 인포그래픽 — Location 헤더로 임시 리다이렉트 흐름과 301/302/307 비교

핵심 요약

HTTP 302 상태 코드(302 Found)는 임시 리다이렉트입니다. 요청된 리소스는 Location 헤더에 지정된 다른 URL에 일시적으로 있지만, 향후 요청에서는 원래 URL을 계속 사용해야 합니다. 단기 리다이렉트(로그인 흐름, A/B 테스트, 점검)에는 302를, 영구적인 이동에는 301만 사용하세요. 리다이렉트 전후로 POST 요청을 유지하려면 302 대신 307을 사용합니다.

Advertisement

HTTP 302 상태 코드란?

HTTP 302 상태 코드(공식 명칭 302 Found)는 클라이언트(보통 브라우저)에 요청된 리소스가 다른 URL로 일시적으로 이동했음을 알리는 HTTP 응답 코드입니다. 새 URL은 응답의 Location 헤더에 제공되며, 클라이언트는 이번 요청에 한해 그곳에서 리소스를 가져옵니다.

이동이 일시적이므로 클라이언트는 향후 요청에서도 원래 URL을 계속 사용해야 합니다. 검색 엔진, 브라우저, 북마크는 원래 URL을 리다이렉트 대상으로 대체해서는 안 됩니다. 이것이 HTTP 302와 301 Moved Permanently의 핵심적인 동작 차이입니다.

302 코드는 RFC 9110에 정의된 HTTP 상태 코드의 3xx 리다이렉션 클래스에 속합니다. 역사적 이름인 'Found'에도 불구하고 응답 본문은 거의 사용되지 않습니다 — 현대 브라우저는 Location 헤더를 렌더링하지 않고 즉시 따릅니다.

참고

간단 정의: 302 응답은 '요청한 리소스는 일시적으로 여기 있습니다 — Location 헤더의 URL에서 가져오시되, 다음 번에는 원래 URL을 계속 사용하세요'를 의미합니다.

302 응답의 구조

HTTP 302 상태 코드 응답은 항상 두 가지 필수 요소를 포함합니다: 상태 라인 자체와 새 URL을 가리키는 Location 헤더입니다. 유효한 Location 헤더가 없으면 클라이언트는 리다이렉트를 따를 수 없습니다.

  • 상태 라인 — HTTP/1.1 302 Found(HTTP/2에서는 HTTP/2 302)

  • Location 헤더 — 클라이언트가 따라야 할 대상 URL(필수)

  • Cache-Control — 보통 no-cache, 브라우저가 리다이렉트 대상을 영구적으로 캐시하지 않도록

  • Body — 일반적으로 비어 있음. 레거시 클라이언트를 위해 작은 HTML 페이지를 포함할 수 있습니다(<html><body><a href="...">여기를 클릭</a></body></html>)

http
HTTP/1.1 302 Found
Location: https://www.example.com/new-page
Content-Type: text/html; charset=UTF-8
Content-Length: 0
Cache-Control: no-cache, no-store
Date: Mon, 27 Apr 2026 14:00:00 GMT

팁

302 응답에는 항상 Cache-Control: no-cache를 설정하세요. 그렇지 않으면 일부 브라우저가 세션 동안 리다이렉트를 캐시하여 원래 URL을 다시 확인하지 않을 수 있어 — 임시 리다이렉트의 '임시' 성격이 무너집니다.

Location 헤더는 절대 URL(https://example.com/path)이거나 경로 상대 URL(/path)일 수 있습니다. 현대 HTTP 클라이언트는 둘 다 받아들이지만, 명확성을 위해 절대 URL이 권장됩니다.

302 vs 301 vs 307 vs 308: 어떤 리다이렉트를 사용해야 할까?

HTTP는 다섯 가지 일반적인 리다이렉트 상태 코드를 정의하며, 올바른 코드 선택은 캐싱, SEO, 요청 메서드 보존에 영향을 줍니다. 다음 표를 결정 매트릭스로 사용하세요:

코드영속성메서드 보존?브라우저 캐시?최적 용도
301 Moved Permanently영구POST→GET으로 변할 수 있음예(적극적으로)영구 URL 변경, 도메인 마이그레이션
302 Found일시적자주 POST→GET으로 변경아니오로그인 흐름, A/B 테스트, 점검
303 See Other일시적항상 GET으로 변경아니오폼 제출 후 POST/Redirect/GET 패턴
307 Temporary Redirect일시적예 — 보존됨아니오POST/PUT 보존이 필요한 임시 리다이렉트
308 Permanent Redirect영구예 — 보존됨예POST/PUT 보존이 필요한 영구 리다이렉트

경고

영구 이동(예: 도메인 변경)에 302를 절대 사용하지 마세요. 검색 엔진은 302를 임시로 처리하며 새 URL로 랭킹 신호를 전달하지 않습니다. 영구 이동에는 항상 301 또는 308을 사용하세요.

현대 권장사항: 임시 리다이렉트가 필요하고 메서드 처리에 모호함이 없게 하려면 302 대신 307을 사용하세요. 307 코드는 HTTP/1.1에 추가되었는데, 이는 정확히 브라우저들이 역사적으로 302에서 POST를 GET으로 바꾸어 사양을 위반했고 — 그 잘못된 동작이 너무 널리 퍼져 사실상의 표준이 되었기 때문입니다.

302 리다이렉트를 사용해야 할 때

리다이렉트가 정말로 임시일 때 — 즉, 미래에 리다이렉트 대상을 제거하거나 변경할 예정인 경우 — HTTP 302 상태 코드를 사용하세요. 일반적인 정당한 사용 사례:

  • 로그인 리다이렉트 — 인증되지 않은 사용자를 /dashboard에서 /login으로 보내고, 로그인 후 다시 돌아오게 함

  • A/B 테스트 — 정규 URL을 변경하지 않고 사용자의 50%를 변형으로 라우팅

  • 점검 페이지 — 서버를 패치하는 동안 모든 트래픽을 일시적으로 /maintenance로 리다이렉트

  • 지역 라우팅 — 방문자를 국가에 따라 /에서 /kr 또는 /us로 보내고, /를 정규 진입점으로 유지

  • 모바일 리다이렉트 — 스마트폰 사용자를 example.com에서 m.example.com으로 리다이렉트(오늘날에는 반응형 디자인이 선호됨)

  • 재고 없는 상품 페이지 — 상품이 다시 입고될 때까지 구매자를 카테고리 페이지로 보냄

  • 단기 프로모션 URL — 세일 기간에만 /black-friday가 캠페인 랜딩으로 리다이렉트

이 중 어느 것이든 영구화되면 301로 전환하세요. 검색 엔진은 장기간의 302를 301로 처리하기 전 몇 달을 기다리므로, 영구 이동을 302에 두면 그 기간 동안 랭킹 신호를 잃습니다.

Advertisement

302 상태 코드 보내는 방법

대부분의 웹 서버와 프레임워크에는 302 리다이렉트를 보내기 위한 내장 헬퍼가 있습니다. 아래는 가장 일반적인 패턴입니다. 각각은 HTTP 302 Found와 Location 헤더를 발행합니다 — 302 응답에 엄격히 필요한 두 가지뿐입니다.

Nginx

Nginx에서는 return 지시어를 코드 302와 함께 사용합니다(코드를 생략한 경우의 기본값도 302):

nginx
server {
    listen 80;
    server_name example.com;

    # 임시 리다이렉트 (302 Found)
    location /old-page {
        return 302 https://example.com/new-page;
    }
}

Apache (.htaccess)

Apache에서는 Redirect를 302 코드와 함께, 또는 RewriteRule을 [R=302,L] 플래그와 함께 사용합니다:

apache
# 단순 임시 리다이렉트
Redirect 302 /old-page https://example.com/new-page

# 또는 패턴 매칭을 위해 mod_rewrite 사용
RewriteEngine On
RewriteRule ^maintenance$ /maintenance.html [R=302,L]

Node.js (Express)

Express의 res.redirect() 메서드는 코드를 제공하지 않으면 기본적으로 302를 사용합니다:

javascript
// 임시 리다이렉트(기본값 302 Found)
app.get('/dashboard', (req, res) => {
  if (!req.user) {
    return res.redirect('/login') // 302 전송
  }
  // ...dashboard 렌더링
})

// 또는 명시적으로:
res.redirect(302, '/login')

팁

요청 메서드(POST, PUT, DELETE)를 보존해야 하면 302 대신 res.redirect(307, '/new-url')을 사용하세요. 브라우저는 302 POST를 GET으로 다운그레이드합니다 — 307은 원래 메서드를 유지합니다.

302 상태 코드 테스트 방법

302 리다이렉트를 구현한 후 올바르게 작동하는지 확인하세요. 가장 빠른 방법은 터미널에서 curl을 사용하는 것입니다 — 브라우저 캐시 간섭 없이 정확한 상태 코드와 Location 헤더를 보여줍니다.

bash
# 리다이렉트를 따르지 않고 응답 헤더만 표시(-I)
curl -I https://example.com/old-page

# 예상 출력:
# HTTP/2 302
# location: https://example.com/new-page
# cache-control: no-cache
# date: Mon, 27 Apr 2026 14:00:00 GMT

# 전체 체인 따르기(-L) 및 각 홉 표시
curl -ILs https://example.com/old-page | grep -i 'HTTP/\|location:'

참고

브라우저 DevTools도 작동합니다: Network 탭을 열고 Preserve log를 활성화한 다음 URL을 로드하세요. 각 리다이렉트는 상태 코드와 Location 헤더가 있는 별도 항목으로 표시됩니다. 다중 홉 체인을 디버깅하는 가장 쉬운 방법입니다.

터미널 액세스가 없으면 DNS Robot의 리다이렉트 체커 무료 도구로 중립 위치에서 전체 체인을 추적하거나 HTTP 헤더 체커로 원시 응답 헤더를 검사하세요 — 둘 다 브라우저 캐시를 우회합니다.

302 리다이렉트와 SEO

HTTP 302 상태 코드는 검색 엔진에 '이 이동은 일시적이므로 원래 URL을 인덱스에 유지하라'고 알립니다. 이것은 랭킹 신호에 직접적인 결과를 갖습니다.

Google Search Central에 따르면 302는 301처럼 원래 URL의 랭킹 신호를 리다이렉트 대상으로 전달하지 않습니다. 원래 URL이 정규로 유지됩니다. 다른 정규화 신호(내부 링크, 사이트맵, hreflang)가 대상 페이지를 가리키면 Google은 여전히 인덱스할 수 있지만 — 302 자체는 정규 신호가 아닙니다.

  • 영구 이동에는 301 사용 — 도메인 변경, URL 구조 변경, 페이지 통합

  • 일시 이동에는 302 사용 — 로그인 흐름, A/B 테스트, 점검, 지역 라우팅

  • 영구 이동을 302에 두지 말 것 — Google은 장기 302를 301로 처리하기까지 몇 달을 기다리므로 랭킹 에쿼티를 잃습니다

  • 체인 피하기 — A → 302 → B → 302 → C는 신호를 희석하고 페이지 로드를 늦춥니다. 각 홉이 지연을 추가합니다

경고

랭킹되어야 할 URL(홈페이지, 핵심 랜딩 페이지)에 302 리다이렉트가 보이면 DNS Robot의 리다이렉트 체커로 감사하세요. 영구 이동에 잘못 구성된 302는 랭킹을 조용히 죽일 수 있습니다.

왜 302는 POST 요청을 GET으로 바꾸는가

이것이 HTTP 302의 가장 놀라운 동작입니다. 원래 RFC는 클라이언트가 리다이렉트를 따를 때 요청 메서드를 보존해야 한다고 했습니다. 그러나 초기 브라우저들 — Mosaic, Netscape, IE — 모두 302에서 POST를 GET으로 바꾸었고, 그 잘못된 동작이 너무 널리 퍼져 WHATWG Fetch Standard에서 표준화되었습니다.

오늘날 브라우저가 POST /login을 보내고 서버가 302 Found로 응답하면, 브라우저는 자동으로 리다이렉트 대상으로 GET /next-page를 발행합니다. 폼 데이터는 버려집니다. 이것은 서버 개발자가 거의 의도하지 않는 일입니다.

http
# 보내는 것:
POST /submit-form HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

name=Alice&email=alice@example.com

# 서버가 302로 응답:
HTTP/1.1 302 Found
Location: /thank-you

# 브라우저는 GET으로 따름(폼 데이터 버려짐!):
GET /thank-you HTTP/1.1
Host: example.com

팁

경험 법칙: GET → 302는 괜찮고, POST → 302는 위험하다. 폼 제출에는 303 See Other(다음 페이지에서 의도적인 GET) 또는 307 Temporary Redirect(POST 유지)를 선호하세요.

리다이렉트가 원래 메서드를 보존해야 한다면(POST가 POST로 유지, PUT이 PUT으로 유지) 302 대신 307 Temporary Redirect를 사용하세요. 의도적으로 본문을 버리고 GET으로 전환하려면 — 고전적인 POST/Redirect/GET 패턴 — 303 See Other를 사용하세요. 둘 다 모호하지 않습니다; 302는 그렇지 않습니다.

Advertisement

일반적인 302 문제와 해결

HTTP 302가 잘못되면 보통 다음 증상 중 하나로 나타납니다. 대부분 간단한 해결책이 있습니다:

  • `200 대신 302 받음` — 서버가 리다이렉트해서는 안 될 때 리다이렉트하고 있음. .htaccess, Nginx 구성 또는 프레임워크 미들웨어에서 의도하지 않은 리다이렉트 규칙 확인

  • `Location 헤더 없는 302` — 잘못된 응답. 브라우저는 빈 페이지를 표시. 코드가 상태 전송 전에 Location 헤더를 설정하는지 확인

  • `자기 자신으로 리다이렉트하는 302` — 리다이렉트 루프. Location URL이 요청 URL과 일치. 누락된 조건에 대해 규칙 확인

  • `폼 데이터를 버리는 302` — POST → 302 → GET이 본문을 버림. POST를 보존하려면 307 Temporary Redirect로 전환

  • `브라우저가 캐시한 302` — 버그가 있는 서버가 리다이렉트에 Cache-Control: max-age=...를 설정. Cache-Control: no-cache 추가하고 브라우저 캐시 비우기

  • `프로덕션에서는 302지만 로컬에서는 아님` — 보통 CDN이나 로드 밸런서가 리다이렉트를 추가. 격리하려면 origin에 직접 테스트

참고

302가 예기치 않게 발생하면 가장 빠른 디버깅 단계는 origin 서버에 대해(CDN 우회) curl -I <url>입니다. origin이 직접 200을 반환하면 302는 CDN, 프록시 또는 로드 밸런서에 의해 주입되고 있습니다.

302 리다이렉트 루프: 진단 방법

리다이렉트 루프는 URL A가 302를 URL B로 반환하고 URL B가 다시 302를 A로 반환할 때 발생합니다. 20홉 후(Chrome과 Firefox에서) 브라우저는 ERR_TOO_MANY_REDIRECTS를 표시하고 포기합니다.

가장 흔한 단일 원인은 CDN(예: Cloudflare)과 origin 서버 간의 SSL/HTTPS 충돌입니다: CDN이 origin에 HTTP로 연결하고, origin이 HTTP→HTTPS로 리다이렉트하고, CDN이 HTTPS를 제거하고 다시 HTTP로 연결 — 무한 루프입니다.

bash
# 전체 체인 따르기(무한 루프 방지를 위해 10홉으로 제한)
curl -ILs --max-redirs 10 https://example.com 2>&1 | grep -i 'HTTP/\|location:'

# 루프 예시:
# HTTP/2 302
# location: http://example.com/
# HTTP/1.1 302 Found
# Location: https://example.com/
# HTTP/2 302
# location: http://example.com/  <-- 루프 확인됨

Location 헤더에서 두 URL이 번갈아 나타나면 302 루프가 확인된 것입니다. 완전한 가이드는 ERR_TOO_MANY_REDIRECTS 가이드를 참고하세요. DNS Robot의 리다이렉트 체커는 중립 위치에서 전체 체인을 추적하고 루프 지점에서 멈춥니다.

302 상태 코드 모범 사례

302 Found를 올바르게 보내면 리다이렉트 구현 시 개발자가 부딪히는 대부분의 버그를 피할 수 있습니다:

  • 항상 Location 헤더 포함 — Location이 없는 302는 잘못되었으며 빈 페이지로 렌더링됩니다

  • 항상 Cache-Control: no-cache 설정 — 그렇지 않으면 일부 브라우저가 세션 동안 리다이렉트를 캐시하여 '임시' 계약을 깹니다

  • Location에 절대 URL 사용 — https://example.com/new는 모호하지 않음; /new는 작동하지만 호스트를 변경하는 프록시 뒤에서 깨질 수 있음

  • 리다이렉트는 한 홉으로 유지 — A → 302 → B는 괜찮음; A → 302 → B → 302 → C는 페이지 로드를 늦추고 신호를 희석

  • POST에서 다른 페이지로 302로 리다이렉트하지 말 것 — 303(의도적 GET) 또는 307(POST 보존) 사용

  • 매월 리다이렉트 감사 — 오래된 임시 리다이렉트는 종종 그 이유보다 오래 살아남음. Redirect Checker로 확인

  • 이동이 영구화되면 301로 전환 — 영구 이동을 302에 몇 주 이상 두지 말 것

브라우저 및 캐시 동작

다양한 브라우저와 중개자가 HTTP 302를 약간씩 다르게 처리합니다. 특이점을 알면 디버깅 시간이 절약됩니다:

클라이언트302의 기본 동작기본 캐시
Chrome / Edge자동 따름, POST→GET 변경헤더가 지시하지 않으면 캐시되지 않음
Firefox자동 따름, POST→GET 변경헤더가 지시하지 않으면 캐시되지 않음
Safari자동 따름, POST→GET 변경리다이렉트 캐싱이 약간 더 적극적
curl(기본)따르지 않음 — 302 + Location 표시캐시 없음
curl -L--max-redirs(기본 50)까지 따름캐시 없음
wget(기본)--max-redirect=20까지 자동 따름캐시 없음
Googlebot따름, 임시 신호로 처리원래 URL 재크롤

엣지 케이스(POST 메서드, 무한 루프, 헤더 존재)에서 리다이렉트 동작을 확인하려면 DNS Robot의 HTTP 헤더 체커가 브라우저 측 메서드 재작성 없이 원시 응답을 보여줍니다. 임시 리다이렉트에 대해서는 MDN 문서와 RFC 9110 사양에서 더 알아보세요.

Advertisement

리다이렉트 체인을 몇 초 만에 추적

DNS Robot의 무료 리다이렉트 체커로 리다이렉트 체인의 모든 홉을 검사하세요 — 상태 코드, Location 헤더, 최종 목적지를 중립 서버에서 확인(브라우저 캐시 없음).

사용해보기 리다이렉트 체커

Advertisement

자주 묻는 질문

302 상태 코드(HTTP 302 Found)는 요청된 리소스가 응답의 Location 헤더에 지정된 다른 URL에 일시적으로 있음을 의미합니다. 클라이언트는 이번 요청에 대해 리다이렉트를 따르지만 향후 요청에서는 원래 URL을 계속 사용해야 합니다. 301 Moved Permanently의 임시 대응물입니다.

관련 도구

Redirect CheckerHTTP Headers CheckSSL Certificate CheckDNS Lookup

관련 기사

ERR_TOO_MANY_REDIRECTS: 해결 방법 (모든 브라우저)HTTP 오류 503 Service Unavailable: 원인과 해결 방법HTTP 오류 500 Internal Server Error: 원인과 해결 방법403 Forbidden 오류: 의미와 해결 방법 완벽 가이드

목차

  • HTTP 302 상태 코드란?
  • 302 응답의 구조
  • 302 vs 301 vs 307 vs 308: 어떤 리다이렉트를 사용해야 할까?
  • 302 리다이렉트를 사용해야 할 때
  • 302 상태 코드 보내는 방법
  • 302 상태 코드 테스트 방법
  • 302 리다이렉트와 SEO
  • 왜 302는 POST 요청을 GET으로 바꾸는가
  • 일반적인 302 문제와 해결
  • 302 리다이렉트 루프: 진단 방법
  • 302 상태 코드 모범 사례
  • 브라우저 및 캐시 동작
  • 자주 묻는 질문