In meiner Ruby on Rails-Anwendung habe ich versucht, ein Bild über den POSTMAN REST- Client im Base64- Format hochzuladen . Wenn ich das Bild poste, erhalte ich eine 406 Not Acceptable Response . Als ich meine Datenbank überprüfte, war das Bild dort und wurde erfolgreich gespeichert.
Was ist der Grund für diesen Fehler? Muss ich etwas in meinem Header angeben?
Meine Anfrage:
URL --- http://localhost:3000/exercises.json
Header:
Content-Type - application/json
Rohdaten:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
Antworten:
Ihre Operation ist nicht fehlgeschlagen.
Ihr Backend-Service gibt an, dass der zurückgegebene Antworttyp nicht im Accept HTTP-Header in Ihrer Client-Anfrage angegeben ist.
Ref: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
http://en.wikipedia.org/wiki/HTTP_status_code -> 406
quelle
406 tritt auf, wenn der Server nicht mit dem in der Anforderung angegebenen Accept-Header antworten kann. In Ihrem Fall scheint application / json für die Antwort für den Server möglicherweise nicht akzeptabel zu sein.
quelle
Sie haben erwähnt, dass Sie Ruby on Rails als Backend verwenden. Sie haben den Code für die entsprechende Methode nicht veröffentlicht, aber ich vermute, dass er ungefähr so aussieht:
Ändern Sie es in:
Und es wird Ihr Problem lösen. Es hat bei mir funktioniert :)
quelle
Sie können auch eine 406-Antwort erhalten, wenn ungültige Cookies im Browser gespeichert sind oder auf die verwiesen wird - beispielsweise wenn ein Rails-Server lokal im Dev-Modus ausgeführt wird.
Wenn Sie zufällig zwei verschiedene Projekte auf demselben Port ausgeführt haben, verweist der Browser möglicherweise auf ein Cookie aus einer anderen localhost-Sitzung.
Das ist mir passiert ... hat mich für eine Minute gestolpert. Ein Blick in Browser> Entwicklermodus> Netzwerk zeigte es.
quelle
"Manchmal" kann dies bedeuten, dass der Server einen internen Fehler hatte und mit einer Fehlermeldung antworten wollte (Beispiel: 500 mit JSON-Nutzdaten). Da die Anforderungsheader jedoch nicht sagten, dass JSON akzeptiert wurde, wird stattdessen eine 406 zurückgegeben. Stelle dir das vor. (in diesem Fall: Spring Boot Webapp).
In diesem Fall ist Ihre Operation fehlgeschlagen. Aber die Fehlermeldung wurde von einem anderen verdeckt.
quelle
In meinem Fall habe ich hinzugefügt:
löste mein Problem vollständig.
quelle
quelle
Wenn Sie 'request.js' verwenden, können Sie Folgendes verwenden:
quelle
In meinem Fall für eine API in .NET-Core ist die API so eingestellt, dass sie mit XML funktioniert (standardmäßig ist sie so eingestellt, dass sie mit JSON antwortet). Daher füge ich diese Anmerkung meinem Controller hinzu:
Danke, dass du mich auf den Weg gebracht hast!
quelle