Co oznacza „oczekujące” na żądanie w oknie programisty Chrome?

105

Co oznacza „ Oczekujący ” w kolumnie stanu na karcie „ Sieć ” w oknie programisty Google Chrome?

Dzieje się tak, gdy mój skrypt strony wysyła żądanie GET, którego odpowiedź zawiera nagłówki treści do pobrania pliku CSV:

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

Działa to dobrze w FF i IE7, pobierając plik CSV zgodnie z oczekiwaniami i otwierając selektor plików, aby zapisać plik, ale Chrome nic nie robi. Potwierdziłem, że serwer odpowiada na żądanie, więc wygląda na to, że Chrome nie przetworzy odpowiedzi.

Co ciekawe, wszystko działa zgodnie z oczekiwaniami, jeśli wpiszę adres URL w pasku adresu Chromes i uderzę.

FYI: Chrome 10.0.648.204 na Win-XP

Lawrence I. Siden
źródło
Mam podobny problem z plikami javascript. Biblioteki jQuery nie ładują się poprawnie i powodują problemy.
Jack M.
Nie zapominaj, że rozszerzenia mogą powodować ten problem - miałem taki problem z dołączeniem piksela śledzącego podmiotu zewnętrznego, żądanie zostało na zawsze zablokowane jako „oczekujące”. Okazało się, że zapomniałem wyłączyć blokowania reklam!
Andy Smith
13
Zauważ, że na to pytanie (pierwsze zdanie) nadal nie ma odpowiedzi. Wszystkie poniższe odpowiedzi (na dzień dzisiejszy) to po prostu „to właśnie spowodowało to we mnie”. Wiadomość jest bardzo ogólna i może być spowodowana wieloma problemami. Gdybym wiedział dokładnie, czym one są, odpowiedziałbym, ale ogólnie wydaje się, że oznacza to, że z jakiegoś powodu komunikacja jest zablokowana gdzieś między stroną a serwerem. Przez „stronę” nie mam na myśli przeglądarki, rozszerzenia przeglądarki mogą to powodować, jak wspomniano w innym miejscu.
AlexMA
1
widząc to z obecną wersją Google Chrome Canary (v43), ale nie ze stabilną wersją Chrome (v40) z adresami URL z Cloudfront
Simon_Weaver,

Odpowiedzi:

61

W moim przypadku odkryłem (po wielu wyrywaniu włosów), że stan „oczekujący” był spowodowany rozszerzeniem AdBlock. Obraz, którego nie udało mi się załadować, miał w adresie URL słowo „reklama”, więc AdBlock uniemożliwił jego załadowanie.

Wyłączenie AdBlock rozwiązuje ten problem.

Zmiana nazwy pliku tak, aby nie zawierał słowa „reklama” w adresie URL również go naprawia i jest oczywiście lepszym rozwiązaniem. Chyba że jest to reklama, w takim przypadku powinieneś ją tak zostawić. :)

Robin Daugherty
źródło
1
To samo widziałem w Chrome z zainstalowanym rozszerzeniem TamperMonkey.
sstn
1
@Robin Daugherty, rozszerzenie adblock jest po stronie serwera czy po stronie klienta ?, po stronie klienta w moim przypadku nie ma nic. Status oczekiwania kończy się między 1,8 a 2,2 minuty ... co może być nie tak? słaba sieć ?.
Juan Ruiz de Castilla
1
Może to być dowolne inne rozszerzenie, które blokuje ładowanie pliku. Spróbuj użyć okna incognito, w którym wszystkie rozszerzenia są wyłączone. (Niektóre rozszerzenia mogą być włączone w trybie incognito, więc powinieneś to sprawdzić.)
Robin Daugherty
Wyrywałem sobie włosy, próbując zrozumieć, dlaczego moje środowisko programistyczne (Angular i Visual Studio) było tak powolne. Wyłączenie uBlock załatwiło sprawę. DZIĘKI!
XVargas
2
Mój występuje w IE, który nie obsługuje AdBlocker ... :( Jest to dla mnie sporadyczny problem.
Json
5

Dostaję to również podczas korzystania z wtyczki HTTPS wszędzie. Ta wtyczka zawiera listę witryn, które mają również https zamiast http. Zakładam więc, że zanim faktyczne żądanie zostanie wysłane, jest już w jakiś sposób anulowane.

Na przykład, kiedy wchodzę na http://stackexchange.com , w Developer najpierw widzę żądanie ze statusem (zakończone). To żądanie ma kilka nagłówków, ale tylko GET, User-Agent i Accept. Brak odpowiedzi.

Następnie pojawia się żądanie do https://stackexchange.com z pełnymi nagłówkami itp.

Zakładam więc, że jest używany do żądań, które nie są wysyłane.

nikt
źródło
5

Miałem problemy z oczekującą prośbą o pliki mp3. Miałem listę plików mp3 i jeden odtwarzacz do ich odtwarzania. Gdybym wybrał plik, który został już pobrany, Chrome zablokowałby żądanie i wyświetliłby „oczekujące żądanie” na karcie sieciowej narzędzi programistycznych.

Wydaje się, że problem dotyczy wszystkich wersji Chrome.

Oto rozwiązanie, które znalazłem:

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

Po prostu dodajesz fikcyjny ciąg zapytania na końcu każdego adresu URL. Zmusza to Chrome do ponownego pobrania pliku.

Inny przykład z odtwarzaczem popcornu (używając jQuery):

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

To działa dla mnie. W rzeczywistości zasób nie jest przechowywany w systemie pamięci podręcznej. Powinno to również działać w ten sam sposób w przypadku plików .csv.

Necko
źródło
2

Miałem ten sam problem na OSX Mavericks, okazało się, że antywirus Sophos blokował niektóre żądania, po odinstalowaniu problem zniknął.

Jeśli uważasz, że przyczyną może być rozszerzenie, jednym prostym sposobem na wypróbowanie tego jest otwarcie chrome z '--disable-extensionsflagą, aby sprawdzić, czy to rozwiązuje problem. Jeśli to nie pomoże, rozważ wyjście poza przeglądarkę, aby sprawdzić, czy jakakolwiek inna aplikacja może powodować problem, w szczególności aplikacje zabezpieczające, które mogą wpływać na żądania.

Santiago Angel
źródło
2

Stan sieci oczekujący na czas oznacza, że ​​żądanie jest w trakcie realizacji. Jak tylko odpowie, czas zostanie zaktualizowany o całkowity czas, który upłynął.

To zdjęcie pokazuje, że połączenie sieciowe jest w stanie przetwarzania (w toku) To zdjęcie pokazuje, że połączenie sieciowe jest w stanie przetwarzania (w toku)

To zdjęcie przedstawia czas przetwarzania przez połączenie sieciowe. To zdjęcie przedstawia czas przetwarzania przez połączenie sieciowe

Harendra Kr. Jadon
źródło
1
Obecnie patrzę na fałszywie zgłoszone czasy, które upłynęły. Tak naprawdę pozostanie w stanie oczekiwania przez 4 sekundy, ale zgłosi 150 ms. I to jest relatywnie długo, jak długo serwer obsługuje te raporty żądań (czyli 150 ms). To tak, jakby coś sztucznie wstrzymywało żądanie rozstrzygnięcia ...
Nikolay Tsenkov
1

Miałem podobny problem z wywołaniami application / json ajax. W ff / IE były w porządku. W chrome w oknie Developer Network Status był zawsze (w toku), ponieważ zwracany był inny kod stanu.

W moim przypadku zmieniłem odpowiedź Json, aby wysłać HttpStatusCode 200, a następnie Chrome był w porządku, a tekst stanu zmienił się na 200 OK.

Na przykład przy użyciu ASP.NET Web Api

 return new HttpResponseMessage(HttpStatusCode.OK ) {
            Content = request.Content
        };
Jafin
źródło
czy możesz podać mały przykład, jak i gdzie zmieniasz HttpStatusCode?
Aras,
1

Ten sam problem z Chrome: na mojej stronie html miałem następujący kod:

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

Ale podczas przeglądania panelu sieci load.jszawsze miał status pending.

Znalazłem obejście przy użyciu asynchronicznego obciążenia 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>

Teraz działa dobrze.

SebastienC
źródło
0

Natknąłem się na ten problem, gdy debugowałem lokalną aplikację internetową. Problemem okazały się ograniczenia programu AVG Antivirus i zapory. Musiałem zezwolić na wyjątek przez zaporę sieciową, aby pozbyć się stanu „Oczekujący”.

Sanjeet Sahay
źródło
0

Dla mnie rozwiązaniem było dodanie następujących elementów na początku żądanego pliku php.

header("Cache-Control: no-cache,no-store");
Anonimowy
źródło
0

W moim przypadku jest aktualizacja dla Chrome, która sprawia, że ​​nie ładuje się przed ponownym uruchomieniem przeglądarki. Twoje zdrowie

Stefanus Diptya
źródło
-3

Napotkałem ten sam problem, gdy zażądałem niektórych obrazów ze strony. Używam JavaScript do ustawienia atrybutu src obiektu img, a jeśli sieć jest słaba, oczekujące zostanie wyświetlone w panelu sieci okna programisty chrome. Myślę, że to z powodu słabej sieci.

jz1108
źródło
4
Mam ten sam problem, ale obrazy zawsze pojawiają się bezpośrednio w IE lub FF, więc to nie jest sieć. Ponadto jest przerywany. Zastanawiałem się, czy masz jakieś nowe spostrzeżenia
Lior
Ten sam problem tutaj. Na FF te obrazy ładują się dobrze.
svassr