web-dev-qa-db-ja.com

Chrome Developer Windowでのリクエストの「保留」とはどういう意味ですか?

Google Chrome Developerウィンドウの[Network "タブのステータス列の下にある" Pending "はどういう意味ですか?

これは、ページスクリプトが、CSVファイルをダウンロードするためのコンテンツヘッダーを含む応答を含むGETリクエストを発行したときに発生します。

Content-type: text/csv;
Content-Disposition: attachment; filename=myfile.csv

これはFFおよびIE7で正常に機能し、CSVファイルを期待どおりにダウンロードし、ファイルピッカーを開いてファイルを保存しますが、Chromeは何もしません。サーバーがリクエストに応答することを確認したため、Chromeは応答を処理しないようです。

奇妙なことに、ChromeのアドレスバーにURLを入力してを押すと、すべて正常に機能します。

参考:Win-XPのChrome 10.0.648.204

96

私の場合、(多くの髪を引っ張った後)「保留中」ステータスはAdBlock拡張機能が原因であることがわかりました。ロードできなかった画像のURLに「ad」という単語が含まれていたため、AdBlockはロードを禁止しました。

AdBlockを無効にすると、この問題が修正されます。

URLに「ad」が含まれないようにファイル名を変更することでも修正されます。これは明らかに優れたソリューションです。広告でない限り、その場合はそのままにしておく必要があります。 :)

59
Robin Daugherty

HTTPS Everywhereプラグインを使用するときにもこれを取得します。このプラグインには、httpの代わりにhttpsもあるサイトのリストがあります。したがって、実際の要求が行われる前に、何らかの形で既にキャンセルされていると思います。

したがって、たとえば http://stackexchange.com にアクセスすると、Developerで最初にステータス(終了)のリクエストが表示されます。このリクエストにはいくつかのヘッダーがありますが、GET、User-Agent、およびAcceptのみです。応答もありません。

その後、 https://stackexchange.com へのリクエストがあり、ヘッダー全体などが含まれます。

そのため、送信されないリクエストに使用されると思います。

5
nobody

Mp3ファイルの保留中の要求にいくつかの問題がありました。 mp3ファイルのリストと、それらを再生する1人のプレーヤーがありました。ダウンロード済みのファイルを選択した場合、Chromeはリクエストをブロックし、開発者ツールのネットワークタブに「保留中のリクエスト」と表示します。

Chromeのすべてのバージョンが影響を受けているようです。

ここに私が見つけた解決策があります:

player[0].setAttribute('src','video.webm?dummy=' + Date.now());

各URLの末尾にダミーのクエリ文字列を追加するだけです。これにより、Chromeがファイルを再度ダウンロードします。

ポップコーンプレーヤーの別の例(jqueryを使用):

url = $(this).find('.url_song').attr('url');
pop = Popcorn.smart( "#player_",  url + '?i=' + Date.now());

これは私のために動作します。実際、リソースはキャッシュシステムに保存されません。これは、.csvファイルでも同じように機能するはずです。

5
Necko

OSX Mavericksでも同じ問題がありましたが、Sophosアンチウイルスが特定のリクエストをブロックしていることがわかりました。アンインストールすると、問題はなくなりました。

拡張機能が原因であると思われる場合、これを試してテストする簡単な方法の1つは、chromeフラグを'--disable-extensionsフラグで開いて、問題が解決するかどうかを確認することです。それでも解決しない場合は、他のアプリケーション、特にリクエストに影響を与える可能性のあるセキュリティアプリが原因である可能性があるかどうか、ブラウザを超えて確認することを検討してください。

2
Santiago Angel

時間通りのネットワーク保留状態は、リクエストが進行中の状態であることを意味します。応答するとすぐに、合計経過時間で時間が更新されます。

この図は、ネットワークコールが処理状態にあることを示しています(保留中)This picture shows the network call is in processing state(Pending)

この図は、ネットワークコールによる処理にかかった時間を示しています。This picture shows the time taken in processing by network call

2

Chromeでの同じ問題:私のhtmlページに次のコードがありました:

<body>
  ...
  <script src="http://myserver/lib/load.js"></script>
  ...
</body>

ただし、ネットワークパネルを見ると、load.jsは常にpendingステータスにありました。

load.jsの非同期ロードを使用して回避策を見つけました。

<body>
  ...
  <script>
    setTimeout(function(){
      var head, script;
      head = document.getElementsByTagName("head")[0];
      script = document.createElement("script");
      script.src = "http://myserver/lib/load.js";
      head.appendChild(script);
    }, 1);
  </script>
  ...
</body>

今はうまく動作しています。

1
SebastienC

Application/json ajax呼び出しでも同様の問題がありました。 ff/IEでは大丈夫でした。異なるステータスコードが返されたため、[開発者ネットワーク]ウィンドウのchromeのステータスは常に(保留中)でした。

私の場合、Jsonレスポンスを200のHttpStatusCodeを送信するように変更すると、Chromeは問題なく、ステータステキストは200 OKに変わりました。

たとえば、ASP.NET Web Apiを使用する

 return new HttpResponseMessage(HttpStatusCode.OK ) {
            Content = request.Content
        };
1
Jafin

私の場合、Chromeの更新プログラムがあり、ブラウザを再起動するまでロードされません。乾杯

0
Stefanus Diptya

ローカルWebアプリケーションをデバッグしているときに、この問題に遭遇しました。問題は、AVGアンチウイルスおよびファイアウォールの制限であることが判明しました。 「保留」ステータスを取り除くために、ファイアウォールを通過する例外を許可する必要がありました。

0
Sanjeet Sahay

私にとっての修正は、要求されていたphpファイルの先頭に次を追加することでした。

header("Cache-Control: no-cache,no-store");
0
Anonymous