0

以下は、私のウェブサイトの .js ファイルの機能であり、ウェブページの head セクション、test.html に含まれています。

function test_redirect() {
    var urlCurrent = document.URL;
    window.location = "http://webanywhere.cs.washington.edu/beta/?starting_url=" + urlCurrent;
}
$.test_redirect();

ページtest.htmlを開いたユーザーを、クエリ文字列のパラメーターとして現在の正しいページのURLを受け入れ、いくつかの操作を実行する別のページにリダイレクトしようとしていることがjavascriptコードからはっきりとわかるようにそれ。

リダイレクトされた Web ページが複数回読み込まれると、問題が発生します。リダイレクトされたページは、実際にはスクリプト ページが挿入された同じ test.html を開きますが、リダイレクトが再び開始されます。

誰かが問題がどこにあるのかを理解するのを手伝ってもらえますか? .

4

2 に答える 2

1

サードパーティからのページの後続の読み込みでリダイレクトを実行しないことを決定するには、さまざまな方法があります。

  1. リダイレクトする直前に、かなり短い有効期限 (1 ~ 2 分など) の Cookie を設定します。読み込み時に Cookie が存在する場合は、リダイレクトしないでください。直前にリダイレクトを行ったばかりなので、このページの読み込みは 3 番目の部分からのものである必要があります。Cookie が存在しない場合は、リダイレクトを行います。

  2. サード パーティの Web サイトに、リダイレクトしないことがわかるように、サード パーティの Web サイトによってそこに配置されていると識別できる何らかのクエリ パラメータを使用して、ページを 2 回目にロードさせます。たとえば、リダイレクト先の URL の末尾に "?noredirect=true" (適切にエンコードされたもの) を追加するとどうなりますか。サード パーティのサイトは、URL に「?noredirect=true」を残しますか?

  3. document.referrer を見て、それがサード パーティのページかどうかを確認します。一部のユーザーは、リファラーをブロックするようにブラウザーを構成する場合があるため、これは 100% 信頼できるものではありません。

  4. リダイレクトを許可する必要があることを指定するクエリ パラメータを指定して、最初にページを開いたとき (リンク元のリンクに関係なく) を指定します。これは、あなたのページがあなたが管理している場所からのみリンクされており、ブックマークされる可能性が低い場合にのみ実現可能です.

于 2012-07-17T20:24:37.023 に答える
1

リファラーを確認します。

function test_redirect() {
    if( document.referrer.indexOf('http://webanywhere.cs.washington.edu') < 0 ){
      var urlCurrent = window.location.url;
      window.location = "http://webanywhere.cs.washington.edu/beta/?starting_url=" + urlCurrent;
    }
}
$.test_redirect();
于 2012-07-17T20:28:51.823 に答える