it-swarm.com.de

Was bedeutet Status = für eine Ressource in Chrome Developer Tools abgebrochen?

Was würde dazu führen, dass eine Seite storniert wird? Ich habe einen Screenshot der Chrome Developer Tools.

Canceled Resource

Das passiert oft, aber nicht jedes Mal. Es scheint, als würden einige andere Ressourcen zwischengespeichert, lädt LeftPane.aspx eine Seitenaktualisierung. Und was wirklich seltsam ist, passiert dies nur in Google Chrome, nicht in Internet Explorer 8. Haben Sie eine Idee, warum Chrome eine Anfrage abbrechen würde?

313
styfle

Wir haben ein ähnliches Problem bekämpft, bei dem Chrome Anforderungen zum Laden von Objekten innerhalb von Frames oder Iframes abgebrochen hat, jedoch nur zeitweise und es schien abhängig vom Computer und/oder der Geschwindigkeit der Internetverbindung zu sein.

Diese Informationen sind ein paar Monate veraltet, aber ich habe Chromium von Grund auf neu erstellt, durch die Quelle gegraben, um alle Stellen zu finden, an denen Anfragen storniert werden konnten, und alle zu debuggenden Haltepunkte geknackt. Die einzigen Stellen, an denen Chrome eine Anforderung abbricht:

  • Das DOM-Element, das die Anforderung verursacht hat, wurde gelöscht (d. H. Ein IMG wird geladen, aber vor dem Laden wurde der IMG-Knoten gelöscht.)
  • Sie haben etwas getan, das das Laden der Daten überflüssig machte. (d. h. Sie haben mit dem Laden eines Iframes begonnen, dann die SRC geändert oder den Inhalt überschrieben.)
  • Es gibt viele Anfragen an denselben Server, und ein Netzwerkproblem bei früheren Anfragen hat gezeigt, dass nachfolgende Anfragen nicht funktionieren würden (DNS-Lookup-Fehler, frühere (gleiche) Anfrage führte beispielsweise zu HTTP 400-Fehlercode usw.).

In unserem Fall haben wir es schließlich auf einen Frame zurückgeführt, der versucht, HTML an einen anderen Frame anzuhängen, was manchmal vor dem Laden des Zielframes geschehen konnte. Wenn Sie den Inhalt eines iframe berühren, kann er die Ressource nicht mehr laden (woher soll er wissen, wo er sie ablegen soll), sodass die Anforderung abgebrochen wird.

472
whamma

status = cancel kann auch bei ajax-Anfragen zu JavaScript-Ereignissen vorkommen:

<script>
  $("#call_ajax").on("click", function(event){
     $.ajax({
        ...    
     });
  });
</script>

<button id="call_ajax">call</button> 

Das Ereignis sendet die Anforderung erfolgreich, wird jedoch dann abgebrochen (aber vom Server verarbeitet). Der Grund ist, dass die Elemente Formulare für Klickereignisse senden, unabhängig davon, ob Sie Ajax-Anforderungen für dasselbe Klickereignis stellen.

Um zu verhindern, dass die Anforderung abgebrochen wird, muss JavaScript event.preventDefault (); müssen aufgerufen werden:

<script>
  $("#call_ajax").on("click", function(event){
     event.preventDefault();
     $.ajax({
        ...    
     });
  });
</script>
33
fuco

Eine andere Sache, auf die Sie achten sollten, ist die AdBlock-Erweiterung oder Erweiterungen im Allgemeinen.

Aber "viele" Leute haben AdBlock ...

Um Erweiterungen auszuschließen, öffnen Sie in incognito einen neuen Tab und stellen Sie sicher, dass "inkognito zulassen" für die Erweiterungen, die Sie testen möchten, "nicht zulassen" ist.

10
James Kyburz

Sie können das Header-Tag "X-Frame-Options" überprüfen. Wenn die Einstellung auf SAMEORIGIN oder DENY gesetzt ist, wird das Einfügen von iFrame von Chrome (und anderen Browsern) entsprechend der spec - Funktion abgebrochen.

Beachten Sie auch, dass einige Browser die Einstellung ALLOW-FROM unterstützen, Chrome jedoch nicht.

Um dieses Problem zu beheben, müssen Sie das Header-Tag "X-Frame-Options" entfernen. Dadurch könnten Sie offen für Clickjacking-Angriffe sein Sie müssen also entscheiden, welche Risiken bestehen und wie Sie sie abschwächen können.

10
Justin Cloud

NB: Vergewissern Sie sich, dass Sie keine Umhüllungsformularelemente haben.

Ich hatte ein ähnliches Problem, bei dem mein Button mit onclick = {} in ein Formularelement eingeschlossen wurde. Wenn Sie auf die Schaltfläche klicken, wird auch das Formular gesendet, und das hat alles durcheinander gebracht ...

Diese Antwort wird wahrscheinlich nie von jemandem gelesen, aber ich dachte mir, warum schreibe ich sie nicht :)

9
stianlp

Folgendes ist mir passiert: Der Server gab einen fehlerhaften "Location" -Header für eine 302-Weiterleitung zurück. Ich öffnete die Seite in Firefox und entdeckte sofort das Problem .. _. Schön, mehrere Tools zu haben :)

6
Jared Forsyth

In meinem Fall habe ich festgestellt, dass es sich um globale Timeout-Einstellungen für Jquery handelt, ein globales Timeout für ein Jquery-Plugin auf 500 ms. Wenn die Anforderung 500 ms überschreitet, bricht Chrome die Anforderung ab.

6
limodou

Eine abgebrochene Anforderung ist bei der Weiterleitung zwischen sicheren und nicht sicheren Seiten in separaten Domänen innerhalb eines Iframes aufgetreten. Die umgeleitete Anforderung wurde in den Entwicklungswerkzeugen als "abgebrochene" Anforderung angezeigt.

Ich habe eine Seite mit einem Iframe, der ein von meinem Zahlungsgateway gehostetes Formular enthält. Wenn das Formular im iframe gesendet wurde, wurde das Zahlungsgateway zu einer URL auf meinem Server zurückgeleitet. Die Weiterleitung hat kürzlich aufgehört zu arbeiten und endete als "Abbruch" -Anforderung. 

Es scheint, dass Chrome (ich verwendete Windows 7 Chrome 30.0.1599.101) keine Umleitung innerhalb des iframe mehr zulässt, um zu einer nicht sicheren Seite in einer separaten Domäne zu gelangen. Um das Problem zu beheben, habe ich nur sichergestellt, dass umgeleitete Anforderungen im iframe immer an sichere URLs gesendet wurden. 

Als ich eine einfachere Testseite mit nur einem iframe erstellte, gab es eine Warnung in der Konsole (die ich zuvor übersehen hatte oder möglicherweise nicht angezeigt wurde):

[Blocked] The page at https://mydomain.com/Payment/EnterDetails ran insecure content from http://mydomain.com/Payment/Success

Die Weiterleitung wurde in Chrome auf PC, Mac und Android zu einer abgebrochenen Anfrage. Ich weiß nicht, ob es spezifisch für die Einrichtung meiner Website ist (SagePay Low Profile) oder ob sich etwas in Chrome geändert hat.

3
Phil M

Ein anderer Ort, an dem wir den (canceled)-Status gefunden haben, ist die falsche Konfiguration eines bestimmten TLS-Zertifikats. Wenn eine Site wie https://www.example.com falsch konfiguriert ist, sodass das Zertifikat nicht www. enthält, aber für https://example.com gültig ist, bricht Chrome diese Anforderung ab und leitet sie automatisch an die letztere Site weiter. Dies ist nicht der Fall für Firefox.

Derzeit gültiges Beispiel: https://www.pthree.org/

3

Chrome Version 33.0.1750.154 m bricht durchgängig das Laden von Bildern ab, wenn ich die Mobile Emulation auf meinen localhost verwende. speziell mit User Agent-Spoofing ein (vs. Bildschirmeinstellungen) 

Wenn ich das User Agent-Spoofing abstelle, Bildanfragen werden nicht abgebrochen, ich sehe die Bilder.

Ich verstehe immer noch nicht warum; In dem ersten Fall, in dem die Anforderung abgebrochen wird, haben nur die Anforderungsheader (VORSICHT: Vorläufige Header) angezeigt

  • Akzeptieren
  • Cache-Steuerung
  • Pragma
  • Referer
  • User-Agent

Im letzteren Fall sind alle diese und andere wie:

  • Cookie
  • Verbindung
  • Wirt
  • Accept-Encoding
  • Accept-Language

Shrug

2
The Red Pea

Ich hatte genau das gleiche mit zwei CSS-Dateien, die in einem anderen Ordner außerhalb meines Haupt-CSS-Ordners gespeichert waren. Ich verwende Expression Engine und stellte fest, dass das Problem in den Regeln meiner htaccess-Datei enthalten war. Ich habe gerade den Ordner zu einer meiner Bedingungen hinzugefügt und es wurde behoben. Hier ist ein Beispiel:

RewriteCond %{REQUEST_URI} !(images|css|js|new_folder|favicon.ico)

Es lohnt sich also, Ihre htaccess-Datei auf mögliche Konflikte zu überprüfen

1
gelviis

Für meinen Fall hatte ich einen Anker mit Klick-Event wie

<a href="" onclick="somemethod($index, hour, $event)">

Innerhalb eines Klickereignisses hatte ich ein Netzwerkgespräch. Chrome stornierte die Anfrage. Der Anker hat href mit "" bedeutet, er lädt die Seite erneut und gleichzeitig das Ereignis click mit einem Netzwerkaufruf, der abgebrochen wird. Wann immer ich die Variable href durch Void wie ersetze

<a href="javascript:void(0)" onclick="somemethod($index, hour, $event)">

Das Problem ist verschwunden!

1
Reza

Ich habe diese Fehlermeldung in Chrome erhalten, als ich über JavaScript umgeleitet wurde:

<script>
    window.location.href = "devhost:88/somepage";
</script>

Wie Sie sehen, Ich habe das 'http: //' vergessen. Nachdem ich es hinzugefügt hatte, hat es funktioniert.

1
Gerfried

Ich habe alle Schriftarten sowie woff , woff2 , ttf eingebettet, wenn ich eine Webschriftart in das Stylesheet einbettet. Kürzlich habe ich festgestellt, dass Chrome die Anforderung an ttf und woff storniert, wenn woff2 vorhanden ist. Ich benutze jetzt die Chrome-Version 66.0.3359.181, bin mir aber nicht sicher, wann mit dem Abbruch zusätzlicher Schriftarten begonnen wurde.

1
Ali Sheikhpour

Hier ist ein weiterer Fall, in dem eine Anfrage von Chrome storniert wurde, auf die ich gerade gestoßen bin, was von keiner Antwort oben abgedeckt wird.

In einer Nussschale
Selbstsigniertes Zertifikat wird auf meinem Android-Telefon nicht als vertrauenswürdig eingestuft.

Einzelheiten
Wir befinden uns in der Entwicklungs-/Debug-Phase. Die URL verweist auf einen selbstsignierten Host. Der Code ist wie folgt:

location.href = 'https://some.Host.com/some/path'

Chrome hat die Anfrage gerade stumm abgebrochen, sodass Neulinge der Webentwicklung wie ich keine Ahnung haben, um das Problem zu beheben. Nachdem ich das Zertifikat mit dem Android-Telefon heruntergeladen und installiert habe, ist das Problem behoben.

1
bestOfSong

Wir hatten dieses Problem mit dem Tag <button> in dem Formular, das eine jax-Anfrage von js senden sollte. Diese Anfrage wurde jedoch aufgrund eines Browsers abgebrochen, der das Formular automatisch bei jedem Klick auf button im Formular sendet.

Wenn Sie also wirklich button anstelle der regulären div oder span auf der Seite verwenden möchten und Formularwurf js senden möchten, sollten Sie einen Listener mit der Funktion preventDefault einrichten.

z.B.

$('button').on('click', function(e){

    e.preventDefault();

    //do ajax
    $.ajax({

     ...
    });

})
1
Denis Matafonov

Es war so einfach wie ein falscher Weg für mich. Ich würde vorschlagen, dass der erste Schritt beim Debuggen darin besteht zu sehen, ob Sie die Datei unabhängig von Ajax usw. laden können.

0
Cameron

Einer der Gründe könnte sein, dass XMLHttpRequest.abort () irgendwo im Code aufgerufen wurde. In diesem Fall hat die Anforderung den Status cancelled in Chrome. Entwickler-Tools Registerkarte Netzwerk.

0

In meinem Fall begann es nach dem chrome 76-Update.

Aufgrund eines Problems in meinem JS-Code wurde window.location mehrmals aktualisiert, was dazu führte, dass die vorherige Anforderung abgebrochen wurde. Obwohl das Problem bereits von früher aufgetreten ist, hat chrome nach dem Update auf Version 76 begonnen, die Anforderung abzubrechen.

0
Vishal

Die Anforderungen wurden möglicherweise durch ein Tracking-Schutz-Plugin blockiert.

0
Nathan

Dies kann jedem helfen, dem ich den abgebrochenen Status begegnet bin, als ich die Rückgabe falsch ausließ. im Formular abschicken. Dies hatte zur Folge, dass auf den Ajax-Send unmittelbar die Submit-Aktion folgte, wodurch die aktuelle Seite überschrieben wurde. Der Code wird unten gezeigt, mit dem wichtigen Return am Ende.

$('form').submit(function() {

    $.validator.unobtrusive.parse($('form'));
    var data = $('form').serialize();
    data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val();

    if ($('form').valid()) {
        $.ajax({
            url: this.action,
            type: 'POST',
            data: data,
            success: submitSuccess,
            fail: submitFailed
        });
    }
    return false;       //needed to stop default form submit action
});

Hoffe das hilft jemandem.

0
Jon P Smith

In meinem Fall hat der Code zum Anzeigen des E-Mail-Client-Fensters das Laden von Bildern angehalten:

document.location.href = mailToLink;

das Verschieben nach $ (window) .load (function () {...}) anstelle von $ (function () {...}) hat geholfen.

0

Für mich war der Status "Abgebrochen", weil die Datei nicht vorhanden war. Seltsam, warum Chrom 404 nicht anzeigt.

0
FreeLightman

mir ist das gleiche passiert, wenn ich einen anrufe. JS-Datei mit $. Ajax, und machen Sie eine Ajax-Anfrage, was ich normalerweise angerufen habe.

Es ist mir passiert, als ich 300 Bilder als Hintergrundbilder geladen habe. Ich vermute, dass einmal die erste Zeit abgelaufen ist, der Rest abgebrochen wurde oder die maximale Anzahl gleichzeitiger Anfragen erreicht wurde. müssen eine 5-zu-einer-Zeit implementieren

0
AwokeKnowing

Für alle, die aus LoopbackJS kommen und versuchen, die benutzerdefinierte Stream-Methode zu verwenden, wie in ihrem Diagrammbeispiel angegeben. Ich habe diese Fehlermeldung mit einer PersistedModel erhalten und zu einer einfachen Model gewechselt. Das Problem mit dem eventsource-Status wurde behoben. 

Dies ist wiederum speziell für die Loopback-API. Und da dies eine Top-Antwort ist und auf Google Top ist, stellte ich fest, dass ich dies in die Mischung der Antworten stecke.

0
Aaron Russell

Ich hatte das gleiche Problem, irgendwo tief in unserem Code hatten wir diesen Pseudocode:

  • einen iframe erstellen
  • onload von iframe senden Sie ein Formular 

  • Entfernen Sie nach 2 Sekunden den iframe

wenn der Server mehr als 2 Sekunden für die Antwort auf den Iframe benötigt, auf den der Server die Antwort geschrieben hat, wurde er entfernt. Die Antwort musste jedoch noch geschrieben werden. Es war jedoch kein Iframe zum Schreiben vorhanden. Um dies zu vermeiden, stellte ich sicher, dass der iframe erst entfernt wird, nachdem die Antwort beendet ist, oder Sie können das Ziel in "_blank" ändern. Dies ist einer der Gründe: wenn die Ressource (iframe) in meinem Fall), dass Sie etwas schreiben, entfernt oder gelöscht werden, bevor Sie mit dem Schreiben aufhören, wird die Anforderung abgebrochen

0
Hiresh