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


402

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

Abgebrochene Ressource

Dies passiert oft, aber nicht jedes Mal. Sobald einige andere Ressourcen zwischengespeichert sind, wird bei einer Seitenaktualisierung die Datei LeftPane.aspx geladen. Und was wirklich seltsam ist, ist, dass dies nur in Google Chrome und nicht in Internet Explorer 8 geschieht. Gibt es Ideen, warum Chrome eine Anfrage stornieren würde?


13
Möglicherweise können Sie weitere Details aus einem Net-Internals- Trace abrufen. Ich hatte ein ähnliches Problem und stellte in meinem Fall fest, dass die Stornierung net::ERR_ABORTEDunter der Decke lag. In diesem Fall wird in diesem Beitrag erläutert, dass "net :: ERR_ABORTED nur generiert werden soll, wenn eine Benutzeraktion eine Unterbrechung des Ladevorgangs verursacht. Dies kann passieren, wenn eine neue Navigation eine vorhandene unterbricht oder wenn der Benutzer auf STOP klickt Taste."
John McCarthy

Vielen Dank. In meinem Fall ist es nicht der Benutzer, weil ich der Benutzer bin. Die Seite hat (zu) viele Frames. Vielleicht wird der Frame src geändert? Es ist nur seltsam, dass ich es noch nie im IE gesehen habe. Ich werde mich mit Netz-Interna befassen.
Styfle

@ nondescript1 Ich habe die Aufnahme gemacht, während ich den Fehler reproduziert und in eine Datei geschrieben habe. Jetzt habe ich eine json-Datei mit 18.000 Zeilen. Wonach suche ich?
Styfle

3
Ich weiß es ehrlich gesagt nicht. Eigentlich bin ich auf deine Frage gestoßen, als ich nach weiteren Informationen zum Status gesucht habe = habe mich selbst storniert, weshalb ich nur Kommentare und keine Antwort hinzufüge;). Ich habe keinen Grund zu der Annahme, dass es sich um Caching handelt. Ich bin misstrauischer gegenüber einer anderen Navigation, die jemanden auf der Seite initiiert hat. Als ich dies sah, habe ich versucht, einen Download mit window.open () zu initiieren, wodurch eine andere Serveranforderung abgebrochen wurde. In meinem Fall hatte Firefox dieses Problem nicht, Chrome jedoch.
John McCarthy

1
Nur damit es nicht selbstverständlich ist, ist eine mögliche Ursache für "(abgebrochen)" in der Statusspalte - obwohl definitiv nicht die einzig mögliche Ursache -, dass die angegebene URL einen 404- oder einen anderen Fehler zurückgegeben hat. Aktualisieren Sie die URL einige Male in einem anderen Tab, um sicherzustellen, dass sie konsistent geladen wird.
Rakslice

Antworten:


592

Wir hatten ein ähnliches Problem, bei dem Chrome Anfragen zum Laden von Objekten in Frames oder Iframes stornierte, jedoch nur zeitweise, und dies schien vom Computer und / oder der Geschwindigkeit der Internetverbindung abhängig zu sein.

Diese Informationen sind einige Monate veraltet, aber ich habe Chromium von Grund auf neu erstellt, die Quelle durchsucht, um alle Stellen zu finden, an denen Anforderungen storniert werden könnten, und auf alle Haltepunkte gesetzt, um sie zu debuggen. Aus dem Speicher die einzigen Stellen, an denen Chrome eine Anfrage storniert:

  • Das DOM-Element, das die Anforderung verursacht hat, wurde gelöscht (dh ein IMG wird geladen, aber bevor das Laden erfolgte, haben Sie den IMG-Knoten gelöscht).
  • Sie haben etwas getan, das das Laden der Daten unnötig gemacht hat. (dh Sie haben mit dem Laden eines Iframes begonnen, dann den Quellcode geändert oder den Inhalt überschrieben.)
  • Es gehen viele Anforderungen an denselben Server, und ein Netzwerkproblem bei früheren Anforderungen hat gezeigt, dass nachfolgende Anforderungen nicht funktionieren (DNS-Suchfehler, frühere (gleiche) Anforderung, z. B. 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. Dies geschah manchmal, bevor der Zielframe überhaupt geladen wurde. Sobald Sie den Inhalt eines Iframes berühren, kann er die Ressource nicht mehr in ihn laden (woher weiß er, wo er abgelegt werden soll?), Sodass die Anforderung abgebrochen wird.


2
Sehr informativ, danke. Es fällt mir schwer, diesen Fehler zu reproduzieren, da er nicht mehr auftritt, wenn er einmal zwischengespeichert ist. Wenn ich in meinem Javascript einen Haltepunkt setze, passiert das nicht. Ihr erster Aufzählungspunkt ist wahrscheinlich nicht das Problem, da ich nicht sehe, dass ein Element gelöscht wird. Ich weiß, dass es sich nicht um Aufzählungspunkt 3 handelt. Was meinen Sie mit "Sobald Sie den Inhalt eines Iframes berühren, kann er die Ressource nicht mehr in ihn laden"? Kannst du ein Beispiel geben?
Styfle

1
Interessant. Also muss ich alle document.writes zu diesem Frame finden und sicherstellen, dass sie nur schreiben, wenn der Frame geladen ist. Ich werde dies als die richtige Antwort markieren, da Sie die Bedeutung dieses Status beantwortet haben.
Styfle

3
@styfle Ja, aber es können auch andere Dinge als document.write sein. Alles, was versucht, in den Frame zu schreiben, wie appendChild oder ähnliches, würde dies wahrscheinlich verursachen. Möglicherweise möchten Sie in jedem Frame einen onLoad-Handler erstellen, der truein eine Variable schreibt . Dann suchen andere Frames zuerst danach, bevor Sie etwas berühren.
Whamma

14
Ich hatte auch schreckliche Probleme damit. Ich habe festgestellt, dass dies durchweg ausgelöst wird, wenn die AJAX-Antwort den Statuscode 301/302 hat und sich die Weiterleitungs-URL in einer anderen Domain befindet. Dies ist für mich eine konsequente Reproduktion des Problems.
eb80

1
Für mich war es ein Iframe, der an den Körper angehängt und dann sofort aus dem Körper entfernt wurde. Ich habe einen Zeilenumbruch gemacht und das Problem war nicht da. Setzen Sie also eine Zeitüberschreitung (15 ms) und überwinden Sie diese. @whamma es ist wirklich motivierend, wie Sie das Problem angegangen sind. Vielen Dank für die tollen Details. :-)
Muhammed Basilikum

53

status = cancel kann auch bei Ajax-Anfragen zu JavaScript-Ereignissen auftreten:

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

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

Das Ereignis sendet die Anforderung erfolgreich, wird dann jedoch abgebrochen (aber vom Server verarbeitet). Der Grund dafür 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, verwenden Sie JavaScript event.preventDefault (). müssen genannt werden:

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

3
Dies hat mich gerettet, war das Problem in meinem Fall, in dem ich Winkel ng-clickauf einer Schaltfläche mit verwendet type="submit"und dann einige Netzwerke in der aufgerufenen Funktion durchgeführt habe. Chrome stornierte diese Anfrage immer wieder ...
Robin

1
Leider funktioniert es bei mir nicht. Irgendwelche anderen Hinweise?
Krzysztof Madej

Vaov hat mich auch gerettet! Für ein eckiges ng-click-Ereignis hatte ich $ http-Anfragen verschachtelt und die zweite wurde abgebrochen. Nach dem Festlegen der Standardzeile zum Verhindern hat es wieder funktioniert, danke.
Bahadir Tasdemir

Danke dafür. Ich wusste, dass es kein CORS- oder DOM-Problem war. Vielleicht könnte @whamma ihre Antwort aktualisieren, um dies als möglichen Grund für die Vollständigkeit aufzunehmen :)
Glidester

Gegrüßet seist du dem Herrn !! Sir, Sie sind ein absolutes Genie! Ich bin gerettet worden !!
Dilnoor Singh

25

NB: Stellen Sie sicher, dass Sie keine umschließenden Formularelemente haben .

Ich hatte ein ähnliches Problem, bei dem meine Schaltfläche 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 ich sie nicht schreibe :)


Dies war die Hauptursache für mich - eine Schaltfläche löste den POST zweimal aus. Ich wollte die Schaltfläche wegen CSS- Problemen
Nikolai Koudelia

Gleicher Fehler. Zur Verdeutlichung hatte ich eine Schaltfläche in einem Formular mit einer Art von Senden, aber einen Klick, der ein Abfrageformular abfragte, Ajax senden. Es funktionierte in FF, scheiterte aber in Chome und IE und machte mich verrückt, bis ich es fand.
ChrisThompson

Dies behebt ein Problem, das mir in einer Vue.js-App passiert ist, in der ein @clickEreignis an ein <button>Element in einem Formularumbruch gebunden wurde . Vermeiden Sie dies, es sei denn, Sie verwenden den @submit.preventEreignismodifikator von Vue .
Paul Wenzel

Dies war bei mir der Fall. Durch Hinzufügen eines type="button"zu meinem Schaltflächen-Tag wurde das Formular nicht gesendet und das abgebrochene Ereignis wurde vermieden.
Brandon Medenwald

12

Eine andere Sache, auf die Sie achten sollten, könnte die AdBlock-Erweiterung oder Erweiterungen im Allgemeinen sein.

Aber "viele" Leute haben AdBlock ....

Um Erweiterungen auszuschließen, öffnen Sie eine neue Registerkarte in inkognito und stellen Sie sicher, dass "In inkognito zulassen" für die zu testenden Erweiterungen deaktiviert ist.


Genau das, was passiert ist. Das Noscript-Plugin wurde aktiviert und plötzlich wurde iFrame nicht mehr geladen.
Margus Pala

Für mich war es das Hola-Plugin. Nach dem Deaktivieren werden Anforderungen nicht mehr abgebrochen.
Lenin Raj Rajasekaran

1
In meinem Fall war es "JavaScript Errors Notifier" Chrome-Erweiterung
Alex

Ich habe versucht, alles zu untersuchen und immer noch kein Glück mit Angular 8, habe alle Nebenstellen deaktiviert und immer noch im langsamen 3G-Netzwerk werden frühere Anrufe abgebrochen. :(
born2net

10

Möglicherweise möchten Sie das Header-Tag "X-Frame-Options" überprüfen. Wenn SAMEORIGIN oder DENY festgelegt ist, wird das Einfügen von iFrame von Chrome (und anderen Browsern) gemäß der Spezifikation abgebrochen .

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

Um dies zu beheben, müssen Sie das Header-Tag "X-Frame-Options" entfernen. Dies könnte Sie für Clickjacking-Angriffe offen lassen, sodass Sie entscheiden müssen, welche Risiken bestehen und wie Sie diese mindern können.


Das war genau mein Problem. Dieser Thread hat gute Antworten, wie man es behebt: stackoverflow.com/questions/6666423/…
ToniTornado

8

In meinem Fall stellte ich fest, dass es sich um Einstellungen für das globale Zeitlimit für die Abfrage handelt, ein globales Zeitlimit für die Einrichtung des Abfrage-Plugins auf 500 ms, sodass Chrome die Anforderung abbricht, wenn die Anforderung 500 ms überschreitet.


Auf dasselbe Problem stoßen. In meinem Fall handelt es sich um eine lokale WordPress / WooCommerce-Entwicklung mit VirtualBox-Gastserver, und einige WooCommerce-AJAX-Anforderungen haben ein vordefiniertes AJAX-Zeitlimit von 5000 ms. Wenn jemand auf dasselbe Problem gestoßen ist, wurde dieses Zeitlimit in der includes/class-wc-frontend-scripts.phpDatei definiert .
Ivan Shatsky

7

Folgendes ist mir passiert: Der Server hat einen fehlerhaften "Standort" -Header für eine 302-Umleitung zurückgegeben. Chrome hat mir das natürlich nicht gesagt. Ich habe die Seite in Firefox geöffnet und das Problem sofort entdeckt. Schön, mehrere Werkzeuge zu haben :)


Dies ist zwar sehr offensichtlich, aber dennoch eine sehr nützliche Antwort. Ich bearbeitete einen alten Coffeescript-Code und hatte völlig vergessen, dass einfache Anführungszeichen die #{}Interpolation nicht durchführten, sodass die resultierende URL fehlerhaft war. Aber Chrome hat mir nichts darüber erzählt.
Kumarharsh

4

Ein weiterer Ort, an dem wir auf den (canceled)Status gestoßen sind, ist eine bestimmte Fehlkonfiguration des TLS-Zertifikats. Wenn eine Site wie die so https://www.example.comfalsch konfiguriert ist, dass das Zertifikat das nicht enthält, www.aber gültig ist https://example.com, bricht Chrome diese Anforderung ab und leitet sie automatisch zur letzteren Site weiter. Dies ist bei Firefox nicht der Fall.

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


Können Sie im Grunde nur von einer Nicht-Zertifikat-Domain zu einer zertifizierten umleiten? von nackt bis www? oder sehen Sie immer entweder storniert oder Zertifikatfehler?
Konstantin Vahrushev

3

Bei der Umleitung zwischen sicheren und nicht sicheren Seiten in separaten Domänen innerhalb eines Iframes ist mir eine stornierte Anfrage passiert. Die umgeleitete Anfrage wurde in den Entwicklungstools als "abgebrochene" Anfrage angezeigt.

Ich habe eine Seite mit einem Iframe, der ein Formular enthält, das von meinem Zahlungsgateway gehostet wird. Wenn das Formular im Iframe gesendet wurde, leitete das Zahlungsgateway zurück zu einer URL auf meinem Server. Die Umleitung hat kürzlich aufgehört zu funktionieren und wurde stattdessen als "abgebrochene" Anforderung ausgeführt.

Es scheint, dass Chrome (ich habe Windows 7 Chrome 30.0.1599.101 verwendet) einer Umleitung innerhalb des Iframes nicht mehr erlaubt hat, zu einer nicht sicheren Seite in einer separaten Domain zu wechseln. Um dies 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 erstellt habe, gab es eine Warnung in der Konsole (die ich zuvor verpasst hatte oder vielleicht 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 mein Website-Setup ist (SagePay Low Profile) oder ob sich in Chrome etwas geändert hat.


Ich sehe in Chrome 30 ein fast identisches Verhalten bei der Verwendung von von Datacash gehosteten Zahlungsdiensten, aber in meinem Fall wird der POST von der 3dsecure-Site zur Datacash-Site abgebrochen, obwohl beide https sind. Es erweist sich als ein Rätsel.
Jason

2

Chrome Version 33.0.1750.154 m bricht das Laden von Bildern durchgehend ab, wenn ich die mobile Emulation verwende, die auf meinen lokalen Host zeigt. speziell mit User - Agent - Spoofing auf (gegenüber nur Bildschirmeinstellungen).

Wenn ich das Spoofing von User Agent ausschalte; Bildanfragen werden nicht storniert, ich sehe die Bilder.

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

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

Im letzteren Fall mögen alle diese und andere:

  • Plätzchen
  • Verbindung
  • Wirt
  • Accept-Encoding
  • Akzeptiere-Sprache

Zucken


2

Ich habe diesen Fehler in Chrome erhalten, als ich über JavaScript umgeleitet habe:

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

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


2

Für meinen Fall hatte ich einen Anker mit Klickereignis wie

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

Innerhalb des Klickereignisses hatte ich einen Netzwerkanruf, bei dem Chrome die Anfrage abbrach. Der Anker hat hrefmit ""Mitteln, es die Seite neu geladen und gleichzeitig hat es Ereignis mit Netzanruf klicken , die gelöscht wird. Wann immer ich das hrefdurch void wie ersetze

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

Das Problem ging weg!


2

Hier ist ein weiterer Fall, in dem eine Anfrage von Chrome storniert wurde, auf den ich gerade gestoßen bin und der von keiner der Antworten dort oben abgedeckt wird.

Kurz gesagt,
selbstsigniertes Zertifikat, das auf meinem Android-Handy nicht vertrauenswürdig ist.

Details
Wir befinden uns in der Entwicklungs- / Debug-Phase. Die URL zeigt auf einen selbstsignierten Host. Der Code lautet wie folgt:

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

Chrome hat die Anfrage nur stillschweigend abgebrochen und für Neulinge wie mich keine Ahnung von der Webentwicklung gelassen, um das Problem zu beheben. Sobald ich das Zertifikat über das Android-Handy heruntergeladen und installiert habe, ist das Problem behoben.


2

Wenn Sie einige auf Observable basierende HTTP-Anforderungen wie die in Angular (2+) integrierten verwenden, kann die HTTP-Anforderung abgebrochen werden, wenn Observable abgebrochen wird (häufig, wenn Sie den RxJS 6- switchMapOperator zum Kombinieren der Streams verwenden). . In den meisten Fällen reicht es aus, mergeMapstattdessen den Operator zu verwenden, wenn die Anforderung abgeschlossen werden soll.


1

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 habe festgestellt, dass das Problem in den Regeln in meiner htaccess-Datei enthalten ist. Ich habe den Ordner gerade zu einer meiner Bedingungen hinzugefügt und er hat ihn behoben. Hier ist ein Beispiel:

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

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


1

Ich habe alle Arten von Schriftarten sowie woff , woff2 , ttf eingebettet , wenn ich eine Webschriftart in ein Stylesheet einbette. Kürzlich habe ich festgestellt, dass Chrome die Anforderung von ttf und woff abbricht, wenn woff2 vorhanden ist. Ich verwende derzeit die Chrome-Version 66.0.3359.181, bin mir jedoch nicht sicher, wann Chrome mit dem Abbrechen zusätzlicher Schriftarten begonnen hat.


1

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

Wenn Sie also wirklich button anstelle von normal divoder spanauf der Seite verwenden möchten und Formular-Wurf-Js senden möchten, sollten Sie einen Listener mit preventDefaultFunktion einrichten .

z.B

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

    e.preventDefault();

    //do ajax
    $.ajax({

     ...
    });

})

0

ist mir genauso passiert, als ich a angerufen habe. js Datei mit $. Ajax, und machen Sie eine Ajax-Anfrage, was ich getan habe, war normal anzurufen.


0

In meinem Fall hat der Code zum Anzeigen des E-Mail-Client-Fensters dazu geführt, dass Chrome das Laden von Bildern beendet hat:

document.location.href = mailToLink;

Das Verschieben nach $ (Fenster) .load (Funktion () {...}) anstelle von $ (Funktion () {...}) hat geholfen.


0

In can hilft dies jedem, dem ich den stornierten Status begegnet bin, als ich die Rückgabe false weggelassen habe; im Formular einreichen. Dies führte dazu, dass auf den Ajax-Send sofort die Submit-Aktion folgte, die die aktuelle Seite überschrieb. Der Code wird unten angezeigt, wobei die wichtige Rückgabe am Ende false ist.

$('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

Für alle, die von LoopbackJS kommen und versuchen, die benutzerdefinierte Stream-Methode zu verwenden, wie in ihrem Diagrammbeispiel angegeben. Ich habe diesen Fehler mit a erhalten PersistedModelund durch Umschalten auf ein Basisproblem wurde Modelmein Problem mit dem eventsourceAufheben des Status behoben .

Auch dies ist speziell für die Loopback-API. Und da dies eine Top-Antwort und Top-Antwort auf Google ist, dachte ich mir, ich würde dies in die Mischung der Antworten werfen.


0

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

  • Erstellen Sie einen Iframe
  • Onload von Iframe senden Sie ein Formular

  • Entfernen Sie nach 2 Sekunden den Iframe

Wenn der Server mehr als 2 Sekunden benötigt, um zu antworten, wurde der Iframe, auf den der Server die Antwort schrieb, entfernt, aber die Antwort musste noch geschrieben werden, aber es gab keinen Iframe zum Schreiben. Daher stornierte Chrome die Anforderung. Um dies zu vermeiden, habe ich sichergestellt, dass der Iframe erst entfernt wird, nachdem die Antwort beendet ist, oder Sie können das Ziel in "_blank" ändern. Einer der Gründe ist daher: Wenn die Ressource (in meinem Fall Iframe), in die Sie etwas schreiben, entfernt oder gelöscht wird, bevor Sie aufhören, darauf zu schreiben, wird die Anforderung abgebrochen


0

Für mich war der Status "Abgebrochen", weil die Datei nicht existierte. Seltsam, warum Chrom nicht angezeigt wird 404.


0

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


0

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


0

Es ist mir passiert, als ich 300 Bilder als Hintergrundbilder geladen habe. Ich vermute, sobald das erste Mal eine Zeitüberschreitung aufgetreten ist, hat es den Rest abgebrochen oder die maximale gleichzeitige Anforderung erreicht. müssen jeweils 5 implementieren



0

In meinem Fall kam 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 früher aufgetreten war, hat Chrome nach dem Update auf Version 76 begonnen, die Anforderung abzubrechen.


0

Ich hatte das gleiche Problem beim Aktualisieren eines Datensatzes. Innerhalb von save () bereitete ich die aus dem Formular entnommenen Rohdaten so vor, dass sie mit dem Datenbankformat übereinstimmen (wobei viele Aufzählungswerte usw. zugeordnet werden), wodurch die Put-Anforderung zeitweise abgebrochen wird. Ich habe es gelöst, indem ich die Datenvorbereitung aus save () herausgenommen und daraus eine dedizierte dataPrep () -Methode erstellt habe. Ich habe diesen dataPrep in asynchron umgewandelt und warte auf die gesamte speicherintensive Datenkonvertierung. Ich gebe dann die vorbereiteten Daten an die save () -Methode zurück, die ich im http put-Client verwenden könnte. Ich habe sichergestellt, dass ich auf dataPrep () warte, bevor ich die put-Methode aufrufe:

warte auf dataToUpdate = warte auf dataPrep (); http.put (apiUrl, dataToUpdate);

Dies löste das zeitweise Abbrechen der Anfrage.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.