2011-09-16 5 views
2

Facebook 예제는 사용자의 브라우저를 리디렉션하는 두 가지 다른 방법을 보여줍니다.리디렉션 : 헤더와 스크립트 - 어떻게 다른가요?

스크립트 : echo("<script> top.location.href='" . $next_url . "'</script>");

헤더 : 나는 그들 사이에 동작에서 약간의 차이를 발견했습니다하지만, 이러한 차이를 이해하고 사용할 어느 알고 HTTP 이론의 충분한 지식이없는 header("Location: $next_url");

다른 경우.

헤더 접근 방식은 깨끗한 새로 고침을 사용하여 다른 페이지를 "어렵게"호출하는 것이고 스크립트 접근 방식은 Ajax와 같은 "부드러운"호출에 가깝습니다. 전화를 걸 수있는 기존 페이지의

각 접근법에 적합한 사용 사례의 예를 들어 다른 사람이 그 차이점에 대해 잘 설명해 줄 수 있습니까? 감사!

답변

4

이 아마 어딘가에 중복이 있지만, 지금은 그것을 찾을 수없는 페이지 데이터가 출력되기 전에 그래서 ...

header() 리디렉션이 발생한다. 이름에서 알 수 있듯이 브라우저는 페이지 요청을하고 페이지의 응답 헤더에는 다른 주소로 이동하라는 지시가 포함됩니다. 브라우저는 대개 즉시이를 수행합니다.

JavaScript 리디렉션은 이미로드 된 페이지에서 발생합니다.

가급적 간헐적 인 페이지를 먼저 렌더링 할 필요없이 브라우저가 새로운 리소스로 곧바로 이동하기 때문에 가능한 경우 헤더 리디렉션을 사용하려고합니다. 또한 JavaScript가 활성화되지 않은 클라이언트에서도 작동합니다.

+0

Pekka,이 경우 렌더링 된 페이지 데이터 출력이 없습니다. 그것은 모든 PHP 스크립팅입니다. 특히 캔버스 앱이 사용자의 앱 초기 승인을 처리 할 수있는 페이스 북의 예입니다. html 출력이 없다면,이 두 가지 접근 방식은 리다이렉트에 어떤 차이점을 발생시킬 것인가? 아니면 정확히 같은 결과를 얻는가? –

+0

@Bill 헤더 방식은 훨씬 뛰어나며 항상 작동 할 수 있습니다. 스크립트 방식은 그렇지 않습니다. header() 사용 –

+0

@BillScheurer FB 문서가 더 나쁩니다. 그들을 신뢰하지 마십시오. –

관련 문제