2011-09-16 12 views
2

Facebookの例では、ユーザーのブラウザをリダイレクトするための2つの異なる方法が示されています。リダイレクト:ヘッダーとスクリプト - どのように違いますか?

スクリプト: echo("<script> top.location.href='" . $next_url . "'</script>");

ヘッダー:私はそれらの間の動作にいくつかの違いに気づいたが、これらの違いを理解して使用するかを知るためにHTTP論の十分な知識を持っていない header("Location: $next_url");

異なる場合。

ヘッダーのアプローチがクリーンなリフレッシュで別のページへの「ハード」呼び出しであり、スクリプトのアプローチが「ソフト」コール(Ajaxなど)に近い電話をかける既存のページの内外に

誰かがそれぞれのアプローチに適したユースケースの例を使って、それらの違いを説明してくれますか?ありがとう!任意のページのデータが出力される前に

答えて

4

これはおそらくどこかの重複がありますが、私は今それを見つけることができません...

header()リダイレクトが行われます。名前のとおり、ブラウザはページを要求し、ページの応答ヘッダーには別のアドレスに移動する命令が含まれています。ブラウザは通常すぐにそのように行います。

JavaScriptリダイレクトは、既に読み込まれたページ内で行われます。

可能であれば、間欠的なページを最初に表示することなく、ブラウザーを新しいリソースに直接移動させるため、ヘッダーのリダイレクトを使用することをお勧めします。また、JavaScriptを有効にしていないクライアントでも機能します。

+0

この場合、レンダリングされたページデータ出力はありません。これはすべてのPHPスクリプティングです。具体的には、キャンバスアプリがユーザのアプリの初期認証を処理するためのFacebookの例です。 html出力がない場合、これらの2つのアプローチはリダイレクトの違いを生み出しますか、まったく同じ結果が得られますか? –

+0

@Billヘッダーのアプローチははるかに優れており、常に動作することが保証されています。スクリプトアプローチはそうではありません。 header()を使用してください –

+0

@BillScheurer FBドキュメントは悪化しています。それらを信用しないでください。 –