W mojej aplikacji Ruby on Rails próbowałem przesłać obraz przez klienta POSTMAN REST w formacie Base64 . Po wysłaniu obrazu otrzymuję odpowiedź 406 niedopuszczalną . Kiedy sprawdziłem moją bazę danych, obraz był tam i został pomyślnie zapisany.
Jaki jest powód tego błędu, czy jest coś, co muszę podać w nagłówku?
Moja prośba:
URL --- http://localhost:3000/exercises.json
Nagłówek:
Content-Type - application/json
Surowe dane:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
Odpowiedzi:
Twoja operacja nie zakończyła się niepowodzeniem.
Twoja usługa zaplecza mówi, że zwracany typ odpowiedzi nie jest podany w nagłówku Akceptuj HTTP w żądaniu klienta.
Patrz: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
http://en.wikipedia.org/wiki/HTTP_status_code -> 406
źródło
406 dzieje się, gdy serwer nie może odpowiedzieć nagłówkiem accept określonym w żądaniu. W twoim przypadku wydaje się, że aplikacja / json dla odpowiedzi może nie być akceptowalna dla serwera.
źródło
Wspomniałeś, że używasz Ruby on Rails jako backendu. Nie opublikowałeś kodu odpowiedniej metody, ale domyślam się, że wygląda to tak:
Zmień na:
I to rozwiąże twój problem. To zadziałało dla mnie :)
źródło
Możesz także otrzymać odpowiedź 406, gdy nieprawidłowe pliki cookie są przechowywane lub są wywoływane w przeglądarce - na przykład, gdy lokalnie działa serwer Rails w trybie deweloperskim.
Jeśli zdarzyło Ci się uruchomić dwa różne projekty na tym samym porcie, przeglądarka może odwoływać się do pliku cookie z innej sesji localhost.
To mi się przydarzyło ... wpadło mi na minutę. Przeglądarka> Tryb programisty> Sieć to pokazała.
źródło
„Czasami” może to oznaczać, że serwer miał błąd wewnętrzny i chciał odpowiedzieć komunikatem o błędzie (np. 500 z ładunkiem JSON), ale ponieważ nagłówki żądania nie powiedziały, że zaakceptował JSON, zamiast tego zwraca 406. Domyśl. (w tym przypadku: aplikacja webowa rozruchu wiosennego).
W takim przypadku operacja nie powiodła się. Ale komunikat o awarii został zasłonięty przez inny.
źródło
W moim przypadku dodałem:
całkowicie rozwiązał mój problem.
źródło
źródło
Jeśli używasz pliku „request.js”, możesz użyć:
źródło
W moim przypadku dla interfejsu API w .NET-Core, interfejs API jest ustawiony do pracy z XML (domyślnie jest ustawiony na odpowiedź z JSON), więc dodaję tę adnotację do mojego kontrolera:
Dziękuję za postawienie mnie na ścieżce!
źródło