본문 바로가기
개념/Study

302 Redirect

by Hwanii_ 2023. 12. 1.
728x90

1. 302 Redirect 란 ?

 

302 Redirect는 HTTP 상태 코드 중 하나의 종류 이다.

302 Found (Moved Temporarily) 라고 불리고,

300번대 상태 코드는 모두 다른 특징을 가지고 있지만 모두 Redirection을 의미 한다.

 

즉, 302 상태 코드는 리다이렉션을 의미하므로, 클라이언트는 새로운 위치로 재요청을 보내게 된다.

 

최근에는 303 (See Other) 또는 307 (Temporary Redirect) 상태 코드를 사용 하는 것이 권장 되고 있다.

 

[ 기본 개념 ]

 

더보기

 

클라이언트가 서버로 요청을 보내면,

서버는 그 요청에 대한 응답으로 상태 코드를 포함 해서 응답 한다.

 

이때, 302 Redirect의 경우, 서버가 클라이언트에게 리다이렉션할 위치 정보를 알려주게 된다.

따라서, 클라이언트는 새로운 위치를 다시 서버에게 요청 하게 된다.

 

 

 

2. 302 Redirect는 언제 사용 될까 ?

 

예시 1) 리소스 이동

 

- 클라이언트는 서버에 특정한 리소스를 요청 한다.

리소스는 웹에서 모든 것을 의미할 수 있는 단어이다.

HTML 페이지도 될 수 있고, 이미지, 텍스트 문서, 또는 다른 형식의 데이터 등을 모두 포함해서 의미하는 단어 이다.

 

- 서버는 해당 리소스가 일시적으로 다른 위치에 있다는 것 (Moved Temporarily) 을 알리기 위해서 302를 반환 한다.

 

- 클라이언트는 요청한 리소스가 있는 새로운 위치를 서버에게 다시 전송 하게 되고, 서버는 해당 리소스를 반환 한다.

 

즉, 클라이언트가 요청한 특정한 리소스가 일시적으로 다른 위치에 있을 때,

그 리소스가 존재하는 위치 정보를 서버가 반환 하고,

클라이언트는 옮겨진 그 리소스를 찾아가도록 하기 위한 HTTP 상태 코드 라고 볼 수 있다.

 

 

 

예시 2) 클라이언트가 로그인을 하지 않았을 때, 로그인 정보가 필요했어야만 하는 페이지를 요청한 경우

 

- 사용자가 로그인을 해야지만 사용 할 수 있는 페이지를 사용 하기 위해서 서버에게 요청한 상황.

 

- 로그인이 되어 있지 않기 때문에, 서버는 로그인 페이지로 갈 수 있는 페이지 이동 정보를 반환.

 

- 서버에게 응답을 받은 클라이언트는 로그인 페이지로 리다이렉트 됌.

 

 

 

예시 3) 클라이언트가 예시 2) 와 같이 로그인 페이지로 리다이렉트 됬다가, 로그인에 성공한 경우

 

사용자가 로그인에 성공 하면,

서버는 사용자를 로그인 하기 이전의 원래 요청 하려고 했던 페이지로 보내기 위해, 302 Redirect를 사용 한다.

 

 

 

예시 4) 쇼핑몰에서 판매되는 제품이 일시적으로 재고가 떨어지거나 또는 한정판매 제품인 경우

 

쇼핑몰에서 제품 정보를 가지고 있는 페이지 랭크의 순위 정보를 유지 하면서,

사용자에게 제품이 품절됨을 알리고 싶은 상황.

 

이럴때,

301 (Moved Permanently) 상태 코드를 사용하면 해당 제품 정보를 가지고 있는 페이지 랭크의 순위 정보가 변경 된다.

 

대신,

302 (Found) 상태 코드를 사용 하면 검색 엔진은 일시적으로 해당 URL의 페이지 랭크의 순위 정보를 보존 하게 된다.

 

즉,

쇼핑몰은 기존 판매중이였던 품절된 상품의 정보를 가지고 있는 해당 페이지의 랭크 순위 정보를 유지 하면서,

클라이언트는 상품이 품절됬음을 볼 수 있는 페이지를 의미하는 새로운 URL을 가게 된다.

 

주의할 점

 

높은 페이지 랭크를 가진 URL은 검색 결과에서 상위에 노출 되게 된다. (검색 알고리즘)

따라서, 높은 페이지 랭크를 가진 URL을 구입 해서 광고 페이지로 리다이렉트 하는 부적절한 사례가 생기고 있다.

이러한 악용 사례 때문에,

구글은 302 상태 코드를 자주 사용 하거나 또는 부적절하게 사용하는 경우,

기존의 페이지 랭크에 대해 상당한 패널티를 부여 하고 있다.

 

 

 

3. ISVA (IBM Security Verify Access) 에서 302 Redirect는 어떻게 사용 될까 ?

 

ISVA는 IBM Security Verify Access. 즉, 액세스 제어 및 인증 솔루션 이다.

따라서, 보안을 강화 하고, 인증된 사용자만 특정 리소스에 접근할 수 있도록 한다.

 

일반적으로 302 Redirect는 사용자 인증 및 권한 부여 (인가) 와 관련된 프로세스에서 사용 된다.

 

왜 그러냐면, 302 Redirect는 위에서 정리한 것 처럼, 일시적인 리다이렉션을 의미 하는 상태 코드 이다.

클라이언트가 새로운 위치로 재전송 하도록 하는 목적을 가진 코드인 것이다.

 

즉, ISVA에서는 사용자의 인증이 필요한 상황이거나, 또는 인가 (권한) 이 필요한 경우에

로그인 페이지로 클라이언트를 재전송해서 사용자가 자격 증명을 서버에게 제공할 수 있도록 유도 한다.

 

 

 

일반적으로 이러한 인증 및 인가를 위해서 사용되는 302 Redirect 상태 코드가 사용되는 프로세스는 아래와 같다.

 

1) 사용자 접근 시도 : 사용자가 인증 및 인가가 선행되어야만 하는 보호된 리소스에 접근을 시도.

 

2) 인증 확인 : 사용자의 인증이 필요한 경우, ISVA는 사용자를 로그인 페이지로 리다이렉트.

 

3) 302 Redirect : 로그인 페이지로 클라이언트를 일시적으로 리다이렉트.

일시적으로 리다이렉트를 하는것이기 때문에, 원래의 요청에 대한 정보는 유지 한다는 것이 특징 이다.

 

4) 사용자 로그인 : 사용자는 자격 증명을 입력 하고 로그인을 시도.

 

5) 인가 (권한) 확인 : 사용자가 성공적으로 로그인하면, 다시 원래의 요청된 리소스로 302 Redirect를 통해 돌아 간다.

 

 

 

4. Redirect를 의미하는 300번대 코드 종류

 

1) 300 Multiple Choices (다중 선택)

 

- 여러 리소스 사용이 가능 하다. 이는, 클라이언트가 선택 할 수 있는 옵션 이다.

- 응답 본문에는 사용자가 선택할 수 있는 링크가 제공 된다.

 

2) 301 Moved Permanently (영구적으로 이동함)

 

- 요청한 리소스가 새로운 위치로 영구적으로 이동함.

- 브라우저 등은 이후에 새로운 위치로 리소스를 요청함.

 

3) 302 Found (찾음)

 

- 요청한 리소스가 일시적으로 다른 위치로 이동함.

- 최근에는 303 또는 307 상태 코드를 사용 하는 것을 권장.

 

4) 303 See Other (다른곳 보기)

 

- 요청한 리소스가 다른 위치로 이동함. 새로운 요청은 GET 메서드를 사용함.

- 주로 POST 요청에 대해서 리다이렉션 하기 위해 사용.

 

5) 304 Not Modified (수정되지 않음)

 

- 클라이언트에게 이전에 받았던 리소스가 수정 되지 않았음을 알림.

 

6) 305 Use Proxy (프록시 사용)

 

- 요청한 리소스를 얻기 위해서는 프록시를 사용 해야함을 알림.

- 현재는 거의 사용 되지 않는 상태 코드 이다.

 

7) 307 Temporary Redirect (일시적 리다이렉트)

 

- 요청한 리소스가 일시적으로 다른 위치로 이동함.

- 클라이언트는 새로운 위치로 리소스를 다시 요청 해야함. 이때, 원본 요청의 메서드와 본문은 유지 해야함.

 

8) 308 Permanent Redirect (영구적 리다이렉트)

 

- 301 상태 코드와 유사하다. 하지만, 리다이렉트 요청을 변경 하지 않는다. 원본 HTTP 메서드 및 본문을 사용함.

반응형

'개념 > Study' 카테고리의 다른 글

Hosts File 개념 및 DNS  (0) 2023.12.01
ISVD (LDAP) 용어 정리  (0) 2023.12.01
DB2와 ISVD (LDAP)  (0) 2023.11.30
ISVA Runtime Component 구성 하기  (1) 2023.11.30
ISVD (LDAP) 와 Apache Studio 연결 하기  (0) 2023.11.30