HTTP 리다이렉트(Redirect)란?
리다이렉트란 말 그대로 re(다시) + 지시하다(direct) 다시 지시하는 것입니다.
예를 들어 브라우저가 www.test.com/page1 URL을 웹 서버에 요청했습니다. 서버는 HTTP 응답 메시지를 통해 "www.test.com/page2 로 다시 요청하세요~" 라고 브라우저에게 다른 URL(길, 방향) 을 지시할 수 있습니다.
HTTP 리다이렉트는 HTTP 표준으로 정의 되어 있는데 최초 요청을 받은 웹서버는 HTTP 응답 상태코드로 302를 보내고 응답 메시지 헤더 중 Location 값으로 리다이렉트 되어야 할 주소를 설정해 리턴합니다.
브라우저등의 웹 클라이언트는 HTTP 응답 메시지의 상태코드가 302라는 것을 보고 리다이렉트라는 것을 인지하여 Location 에 설정되어 있는 URL로 다시 재요청합니다.
다음은 위의 순서대로 브라우저와 웹서버가 주고 받은 HTTP 메시지 예 입니다.
1번 요청
GET http://www.test.com/page1 HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: ko-KR
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: www.test.com
Connection: Keep-Alive
Pragma: no-cache
2번 웹서버로부터 응답
Location 값은 /page2 와 같이 서버측의 상대 경로일 수도 있습니다.
HTTP/1.1 302
Location: http://www.test.com/page2
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Tue, 13 Feb 2018 10:33:15 GMT
3번 리다이렉트 경로로 재 요청
GET http://www.test.com/page2 HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: ko-KR
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: www.test.com
Connection: Keep-Alive
Pragma: no-cache
이후 웹서버는 3번에 대한 결과 페이지를 응답할 것입니다.
리다이렉트가 필요한 이유
리다이렉트는 사용하기 나름이지만 네이버 카페를 예로 들어 보겠습니다.
카페마다 다르겠지만 특정 네이버 카페의 글들은 네이버 회원이라고 하더라도 해당 카페에 가입되어 있거나 혹은 카페에 가입되어 있다고 하더라고 특정 등급이 되어야 열람할 수 있는 글들이 있습니다.
만약 해당 글의 URL을 알아내어 브라우저의 주소창에 입력한 후 접근한다고 했을때 권한이 없다면 글에 대한 내용을 웹서버가 응답하면 안될 것입니다. 이때 웹서버는 글에 접근하는 요청마다 권한을 검사하고 권한이 되지 않는 경우 권한을 확인하세요 라는 경고 문구가 뜨는 페이지나 혹은 네이버 계정이 로그인 되어 있지 않은 상태라면 로그인 페이지로 리다이렉트 시킬 필요가 있습니다.
이밖에도 리다이렉트의 활용은 다양하게 존재합니다.
'웹[Web]' 카테고리의 다른 글
[HTTP] HTTP 쿠키란(Cookie)? 쿠키 등장 배경 그리고 쿠키와 세션의 차이점. (3) | 2018.09.11 |
---|---|
JSON이란? JSON 규칙 (0) | 2018.03.24 |
[HTTP] MIME Type(Multipurpose Internet Mail Extensions) (2) | 2018.01.30 |
[WEB] 웹에서의 정적 자원과 동적 자원 (1) | 2017.12.20 |
[HTTP] URL Encoding (0) | 2017.10.30 |