1

関連:ブラウザを介してリモート サーバーの遅延を判断する方法

外部サーバーの http 応答ステータス コードを収集する可能性を理解しようとしています。

コンテキストについて: DOM 要素の値をキャプチャするように記述された JavaScript ライブラリをページにロードし、GET 要求を外部サーバーにアセンブルしてこれらの値をコレクションに渡します。Google アナリティクスはその好例です。ga.js ライブラリは、ページ/ブラウザからのデータ値をスコープし、外部サーバー上のトラッキング ピクセルに対して、多数のクエリ文字列の名前/値のペアおよび/または Cookie 値を含む画像リクエストを行います。これは一般的な活動であり、一般的に理解されています。

私が記録しようとしているのは、外部収集サーバーの応答/確認です (処理やデータ収集のオーバーヘッドを削減するために、これは応答が 200 でない場合のみに制限できます)。私の理解では、応答コードは HTTP ヘッダーでのみ使用できます。この方法でヘッダー応答をキャプチャできるかどうかさえわかりません。 これらの応答コードを取得または記録し、ブラウザで利用できるようにする方法については不明です。これにより、後続の収集ルーチン (おそらく JavaScript ライブラリ) が送信サーバー ドメイン (つまり、HOST: google-analytics) と連携してこれらのコードを収集できるようになります。 .com STATUS: 413 Request Entity Too Large) を送信し、これらの収集された値を外部の収集環境に送信します。

追加の「あると便利」として、タイミングも収集することも有益ですが、これは明らかに別の問題であることを認識しています. リクエストが行われたときにタイマーを開始し、ブラウザに返されたステータス コードでリクエストが確認されたときにタイマーを停止し、その番号をデータとともに送信します: (HOST: google-analytics.com STATUS: 413 Request Entity Too Large TIME: 283ms )。

4

1 に答える 1

0

ajax を使用してリモート サーバーへのリクエストとリモート サーバーの応答を行っている場合は、XmlHTTPRequestオブジェクトからステータス コードを取得できます。リクエストが完了すると、statusプロパティから http ステータス コードが返されます。

jqueryのようなものを使用して物事を単純化できます。

警告: このサンプル コードはテストされていません

 var startTime = new Date().value;

 $.get('http://example.com/some/path', { param1:'value1', param2:'value2'})
    .done(function(data, status, jqxhr) {
      var endTime = new Date().value;
      var elapsedMS = endTime - startTime;
      // handle your success things here
    })
    .error(function(jqXHR, textStatus, errorThrown ) {
      var endTime = new Date().value;
      var elapsedMS = endTime - startTime;
      // handle your failure here
      if (typeof console != 'undefined') {
        console.log('your url', jqXHR.status, textStatus, errorThrown);
      }
    })
    ;

注: 一部のクロスドメイン ajax リクエストはブロックされます。リモート サーバーは、これらの種類の要求を許可するために、明示的に応答ヘッダーを設定する必要があります。

于 2014-08-21T18:58:32.710 に答える