2017-07-19 2 views
2

Ich habe einige REST-Endpunkte, die eine Anfrage verarbeiten und einfach 200 zurückgeben. Ich habe festgestellt, dass es ein Fehler ist, das Ergebnis mit json() zu verknüpfen. Wenn ich versuche, überhaupt keine Zuordnung vorzunehmen, sehe ich einen Browser, der darauf hinweist, dass XML nicht analysiert werden kann. Da nichts zurück kommt, ist es ziemlich normal, ich bin gespannt wie ich mit der Antwort umgehen soll.Angular 2 - Http - Leere Ergebnisse korrekt ignorieren

Hier ist ein Grundcodebeispiel:

await this.http.put("/api/some_url", data).toPromise(); 

Hier ist die Warnung, dass in Firefox zeigt nach oben:

XML Parsing Error: no root element found Location: http://localhost/api/some_url Line Number 1, Column 1: 

Wenn ich versuche, mit json() auf der Karte, es weht ganz oben. Wenn ich nichts tue oder versuche, auf text() zu mappen, bekomme ich nur die Warnung.

In allen Fällen enthalten die Antwortheader Content-Length: 0, also bin ich überrascht, Angular2/Firefox versucht, alles zu analysieren. Ich weiß nicht, ob diese Warnung von Angular2 oder Firefox kommt. Ich habe dies in Chrome und IE versucht und es gibt keine Warnung. Ich frage mich, ob es spezifisch für Firefox ist.

Antwort

1

Wenn kein Inhalt zurückgegeben wird, z. return Ok() (HTTP-Statuscode 200) in ASP.NET Core, Inhaltstyp ist (natürlich) nicht angegeben, aber Firefox nimmt die Antwort als XML an und versucht ein leeres Dokument zu parsen, was zu folgendem Konsolenfehler führt:

XML Parsing Error: no root element found Location ...

Angabe von return NoContent(); (HTTP-Statuscode 204) macht Firefox glücklich (und funktioniert auch für andere Browser).

Das Problem bei [email protected] berichtet:

and a parsing failure will simply be logged to the web console instead.