Narzędzia deweloperskie Chrome nie pokazują odpowiedzi, nawet zwracana treść ma nagłówek Content-Type: text / html; charset = UTF-8

142

Dlaczego moje narzędzia programistyczne Chrome pokazują w odpowiedzi komunikat „Nie udało się wyświetlić danych odpowiedzi”, gdy zwrócona treść jest typu text / html?

Jaka jest alternatywa, aby zobaczyć zwróconą odpowiedź w narzędziach programistycznych?

randominstanceOfLivingThing
źródło
Odkryłem, że Microsoft Edge Dev (oparty na Chromium) nie daje mi tego błędu.
Imię
Czy próbowałeś sprawdzić w przeglądarce Firefox?
Rajendra kumar Vankadari

Odpowiedzi:

200

Myślę, że dzieje się tak tylko wtedy, gdy zaznaczysz opcję „Zachowaj dziennik” i po opuszczeniu strony próbujesz wyświetlić dane odpowiedzi na poprzednie żądanie.

Na przykład zobaczyłem odpowiedź na pytanie o załadowanie tego Stack Overflow. Możesz to zobaczyć.

Dane odpowiedzi

Za drugim razem ponownie załadowałem tę stronę, ale nie spojrzałem na nagłówki ani odpowiedź. Udało mi się przejść do innej witryny internetowej. Teraz, gdy patrzę na odpowiedź, pokazuje „Nie udało się załadować danych odpowiedzi”.

Brak danych odpowiedzi

To znany problem , który istnieje już od jakiegoś czasu i jest przedmiotem wielu dyskusji. Istnieje jednak obejście polegające na wstrzymywaniu się onunload, aby można było wyświetlić odpowiedź przed jej przejściem, a tym samym nie utracić danych po opuszczeniu.

window.onunload = function() { debugger; }
Gideon Pyzer
źródło
186
Brak możliwości wyświetlenia danych odpowiedzi prawie całkowicie zabija kwestię „zachowania dziennika”!
Amalgovinus
1
Twoje obejście window.onunload działało świetnie, dziękuję!
Shane N,
25
Nie, w Chrome 61 z pewnością może się to również zdarzyć, jeśli opcja „Zachowaj dziennik” nie jest zaznaczona i bez opuszczania strony.
LUB Mapper
Dane odpowiedzi mogą być duże, a przy zachowaniu dziennika sprawdzanego w nieskończoność znacznie pogorszyłoby wydajność narzędzia DevTool. Odrzucenie danych odpowiedzi podczas nawigacji było prawdopodobnie zaplanowane. Jeśli masz jakieś sugestie, skomentuj wątek, do którego link znajduje się powyżej.
Gideon Pyzer
2
Wciąż występuje ten problem z Chrome 73.0, onunloadpoprawka nie działa z jakiegoś powodu.
Onza
46

Dla tych, którzy otrzymują błąd podczas żądania danych JSON:

Jeśli żądasz danych JSON, plik JSON może być zbyt duży i to jest przyczyną wystąpienia błędu.

Moim rozwiązaniem jest skopiowanie linku żądania do nowej karty ( getżądanie z przeglądarki) skopiowanie danych do przeglądarki JSON online, gdzie masz automatyczne analizowanie i tam pracujesz.

Tomz
źródło
14
nie jest to jednak rozwiązanie. Pracuję z uwierzytelnianiem i tym podobne. Wbrew celowi narzędzi deweloperskich. Ktoś prawdopodobnie powinien gdzieś stworzyć raport o błędzie. Jednak poprawna odpowiedź tutaj
phil294
1
Czy ten limit można w jakikolwiek sposób skonfigurować?
Willem Hengeveld
W moim przypadku stało się to przy 23 MB, co jest głupią, dużą odpowiedzią JSON ... Otworzyłem problem, aby komunikat o błędzie był bardziej opisowy.
boatcoder
Widzę problem z 6MB JSON :(
Lee Gunn
Uderzając w to również w odpowiedzi JSON około 6 MB nieskompresowanej.
miki noidea
39

Jak opisał Gideon, jest to znany problem z Chrome, który był otwarty od ponad 5 lat i nie był zainteresowany jego naprawieniem.

Niestety w moim przypadku window.onunload = function() { debugger; }obejście również nie zadziałało. Jak dotąd najlepszym rozwiązaniem, jakie znalazłem, jest użycie przeglądarki Firefox, która wyświetla dane odpowiedzi nawet po nawigacji. Devtools Firefoksa mają również wiele fajnych funkcji, których brakuje w Chrome, takich jak składnia podświetlająca dane odpowiedzi, jeśli jest to html i automatycznie analizuje je, jeśli jest to JSON.

Antymon
źródło
4
Wow, świetna rzecz. Konieczność debugowania błędu, który występuje tylko w przeglądarce Chrome, a nie przeglądarce Firefox. Więc też nie ma opcji dla mnie. Poważnie, dlaczego wszyscy mówią, że narzędzia internetowe Chrome są o wiele lepsze niż Firefox? Wygląda na to, że nie próbowali Firefoksa od lat.
mozzbozz,
11
Chrome nie ma również wygodnej opcji żądania „Edytuj i wyślij ponownie” w Firefoksie.
Antymon
1
Tak ... Użyłem również FF do wykonania zadania ... Działało zgodnie z oczekiwaniami. Żyjemy w zdradliwych czasach!
nmirceac
@Antimony chrome miał opcję "Resend" już od dłuższego czasu, ale w jednym z ostatnich wydań usunęli nawet to ... Na szczęście można to zrobić szybko fetch(...copied link...)w konsoli i obserwować odpowiedź w zakładce sieci
Ivan Hušnjak
Nadal to rozumiem, nawet teraz. Na przykład, wolałbym, żeby naprawili to, co już mają, zamiast wprowadzać bezsensowne funkcje, takie jak gorliwa ocena w konsoli i zaniedbać jakość swoich podstawowych narzędzi programistycznych.
thephpdev
20

Jak opisał Gideon, jest to znany problem. Zamiast tego do
użytku window.onunload = function() { debugger; }.
Ale możesz dodać punkt przerwania na karcie Źródło, a następnie rozwiązać problem. lubię to: wprowadź opis obrazu tutaj

Fitz
źródło
Jaka jest przewaga karty Źródło window.onunload = function() { debugger; }?
Mihail Malostanidis
1
nie musisz pisać kodu dla debuggera i możesz debugować na wyższych środowiskach, gdzie być może przeskakujesz między stronami i nie zachowujesz tego samego okna
Parijat Kalia
window.onunload = function() { debugger; }nie działało dla mnie, to działało. dzięki!
aexl
11

Komunikat „Nie udało się wyświetlić danych odpowiedzi” może również wystąpić, jeśli wykonujesz żądania międzydomenowe, a zdalny host nie obsługuje poprawnie nagłówków CORS. Sprawdź konsolę js pod kątem błędów.

deweydb
źródło
2
chrom nadal jest zepsuty, ponieważ nie pokazuje odpowiedzi (w jakimkolwiek kształcie) - FF zadziałało dla mnie
nmirceac
Masz rację! Ale właśnie dlatego potrzebuję odpowiedzi, aby zrozumieć, dlaczego moje żądanie zawodzi. Wszystko działa dobrze z curl, ale przeglądarka Chrome nadal nie działa z komunikatem „Odpowiedź na żądanie inspekcji wstępnej nie przechodzi kontroli dostępu: brak nagłówka„ Access-Control-Allow-Origin ”w żądanym zasobie”
AHA
4

Jeśli się z żądania AJAX fetch, odpowiedź nie jest pokazany chyba to odczytać z .text(), .json()itp

Jeśli po prostu zrobisz:

 r = fetch("/some-path");

odpowiedź nie będzie wyświetlana w narzędziach programistycznych.
Pojawia się po uruchomieniu:

r.then(r => r.text())
gre_gor
źródło
1

Dla tej osoby, która otrzymała ten błąd podczas żądania dużych danych JSON, nie jest to, jak wspomniał Blauhirn, rozwiązanie, aby po prostu otworzyć żądanie w nowej karcie, jeśli używasz nagłówków uwierzytelniania i tym podobnych.

Forturnatly chrome ma inne opcje, takie jak Copy -> Copy as curl. Uruchomienie tego wywołania z polecenia commandoline przez cURL będzie dokładną repliką pierwotnego wywołania.

Dodałem > ~/result.jsondo ostatniej części komandosa, aby zapisać wynik do pliku. W przeciwnym razie zostanie przesłany do konsoli.

thephper
źródło
1
Dokładna replika nie jest przydatna, jeśli stan serwera dostarczającego odpowiedź uległ zmianie. Tak więc dla mnie, że muszę czekać około 40 minut na wystąpienie zdarzenia, a to zdarzenie uruchamia nową stronę, całkowicie zrywa to całe użycie. Powinna to być opcja, którą można przełączać. Niestety nie ma możliwości głosowania ani komentowania dla zwykłych gości w sprawie wymienionej w poprzednim komentarzu, chyba że należysz do ich zespołu: /
David Mårtensson