18.Redirection


  Redirection이란 사용자가 a.cgi를 요청했는데, 이 a.cgi가 실행되면서 또 다른 URL로 이동시키는 것을 말한다.

  대부분의 환경에서 URL간의 이동은 전적으로 사용자에게만 권한이 있었으나, 이 방법을 쓰게 되면 서버에 의해서 URL간의 이동이 이루어 진다고 볼 수 있다.

    Redirection 수행위치   Redirection 명령은 서버에서 발생하는 것이고, 실제로 다른 경로를 불러들이는 역할은 브라우저에 의해서 수행된다. 따라서, 서버에서 URL간의 직접적인 이동이 이뤄어지는 아니다. 만일, 브라우저가 이러한 기능을 지원하지 않으면, 아무런 동작도 하지 않게 되기 때문이다.
  사용방법은 간단하다. 즉, 다음과 같은 문장만 있으면 된다.

printf("Location: http://www.deafire.com/nextstep.html\n\n");
    주 의 사 항   반드시 지켜져야할 주의 사항이 하나 있다. 모든 CGI에 포함시켰던 Content-Type: text/html이란 문장이 없어야 한다는 점이다. 즉, Location도 header의 일종이기 때문에 Cookie에서와 같이 다른 어떤 문장보다도 선행되어 브라우저로 내려와야 한다는 점이다. 정확히 말하자면, Content-Type: text/html문장보다 앞에 와야 한다는 말이다.
  그러나 이 방법과 동일한 JavaScript Code가 있다. 먼저 아래 JavaScript코드를 보면,

<SCRIPT Language="JavaScript">
    this.location = "test2.html";
</SCRIPT>


  즉, 위와 같이 특정한 URL에 접속하면 강제로 다른 페이지로 옮겨가게 하는 방법이 JavaScript를 사용해도 가능한다. 그럼 뭔 차이가 있는가?

  • 화면이 깜박이지 않는다 : JavaScript의 경우 중간에 화면을 거치게 되지만 Redirection의 경우는 바로 이어지게 되어 사용자가 알 수 없다.(물론, 정확하게 말하면 Redirection의 경우 화면에 아무것도 뿌리지 않기 때문에 그렇게 보인다는 말이다.)

  • 사용자가 넘어가는 것을 통제할 수 없다 : 사실 위의 JavaScript 코드는 중간 페이지가 나타나고 다음 페이지로 넘어가기 전의 짧은 순간에 Esc Key를 누르면 다음 페이지로 넘어가지 않게 되지만, Redirection에서는 다음페이지가 하나이므로 선택의 여지가 없다.( 너무 짧은 순간이라 그렇다는 것이다. )
  Redirection을 할 때 브라우저에서 넘어온 값들이 상속되지는 않는다. 즉, 첫 번째 cgi가 GET방식으로 name=deadfire라는 인자를 받았다고 해서, Redirection한다고 두 번째 CGI에게도 동일한 인자가 넘어가는게 아니라는 점이다.

  따라서, 반드시 인자를 넘겨주어야 한다. 단점이라면 GET방식은 간단하지만, POST방식이라면 문제가 쉽지는 않다. mail과 비슷한 방식을 쓰기 때문에 Redirection으로 구현하기는 어렵다. 뭐 결국 GET방식이 편리하니 그걸 주로 사용하면 된다.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master