ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹페이지 Redirect 구현
    Note 2021. 1. 17. 16:05

    Redirect

    리다이렉트는 영어 단어 뜻 그대로 Redirect: (다른 주소·방향으로) 다시 보내다

     

    웹페이지에서 리다이렉트 구현 방법은 크게 3가지가 있다.

    - HTTP 리다이렉트
    - HTML 리다이렉션 <meta>
    - javascript 리다이렉션

     

    HTTP 리다이렉트

    HTTP 리다이렉트는 3xx상태 코드를 지닌 응답이다.

     

    리다이렉트 응답을 수신한 브라우저는, 제공된 새로운 URL을 사용하며 그것을 즉시 로드한다.

    출처: Redirections in HTTP / MDN

     

    리다이렉트에는 몇 가지 유형이 있으며 세 가지 카테고리로 나누어진다.

    영속적인 리다이렉션

    영원히 지속됨을 의미한다. 원래의 URL이 더 이상 사용되지 않아야 하며 새로운 URL을 더 선호해야 함을 시사한다.

     

    301 Moved Permanently
    308 Permanent Redirect

     

    일시적인 리다이렉션

    표준 위치에서 접근할 수 없고 다른 위치에서 접근 가능한 경우가 있다. 이런 경우 일시적인 리다이렉트가 사용될 수 있다.

     

    302 Found
    303 See Other
    307 Temporary Redirect

     

    특수 리다이렉션

    300 Multiple Choice
    304 Not Modified

     

    HTML 리다이렉션

    HTTP 리다이렉트는 리다이렉션을 만드는 가장 좋은 방법이지만, 때때로 웹 개발자는 서버에 대한 제어권을 가지고 있지 않거나 그것을 구성할 수 없는 경우가 있다. 이런 특수한 상황들 때문에, 웹 개발자들은 refresh를 설정하기 위해 페이지의 <head> 내에 <meta> 엘리먼트와 http-equiv 속성으로 HTML 페이지를 만들 수 있다. 해당 페이지를 디스플레이할 때, 브라우저는 이 엘리먼트를 발견하고 표시된 페이지로 이동할 것이다.

    <head>
        <meta http-equiv="refresh" content="0;URL='http://www.example.com/'" />
    </head>

    이런 리다이렉션들은 브라우저에서 뒤로 가기 버튼을 무용지물로 만든다.

     

    자바스크립트 리다이렉션

    자바스크립트 내에서의 리다이렉션은 window.location 프로퍼티에 값을 설정해서 만들어지며 새로운 페이지가 로드된다.

    window.location = "http://www.example.com/";

    HTML 리다이렉션처럼, 모든 리소스에서 동작하는 것은 아니며, 명백하게 자바스크립트를 실행한 클라이언트 상에서만 동작한다.

     

     

    우선순위

    1. 페이지가 읽힌 적도 없고 전송된 적도 없는 경우, HTTP 리다이렉트가 항상 먼저 실행된다.
    2. 어떤 HTTP 리다이렉트로 없는 경우에, HTML 리다이렉트 (<meta>)가 실행된다.
    3. 자바스크립트 리다이렉트는 최후의 수단으로써 사용되며, 클라이언트 측에서 자바스크립트를 활성화시킨 경우에만 사용할 수 있다.

    가능한 경우, 항상 HTTP 리다이렉트를 사용해야 하며, <meta> 엘리먼트를 사용해서는 안된다. 만약 개발자가 HTTP 리다이렉트를 변경하고 HTML 리다이렉트를 잊는다면, 리다이렉트는 더 이상 동일한 한 것이 아니거나, 무한 루프로 종료되거나 다른 악몽이 시작될 수도 있다.

     

     

     

     

    출처: Redirections in HTTP / MDN

    'Note' 카테고리의 다른 글

    React Hooks  (0) 2021.01.18
    px, rem, em  (0) 2021.01.18
    Cookie, Session  (0) 2020.12.17
    Axios  (0) 2020.12.17
    AWS(Amazon Web Services)  (0) 2020.12.16

    댓글