with returned responsebody not for failed error codigo codes code aceptable acceptable json rest http http-response-codes http-status-code-406

json - returned - ¿Qué es la "respuesta 406 no aceptable" en HTTP?



server returned http response code 406 for url (7)

406 No aceptable El recurso identificado por la solicitud solo es capaz de generar entidades de respuesta que tienen características de contenido no aceptables de acuerdo con los encabezados de aceptación enviados en la solicitud.

406 ocurre cuando el servidor no puede responder con el encabezado accept especificado en la solicitud. En su caso, parece que la aplicación / json para la respuesta puede no ser aceptable para el servidor.

En mi aplicación Ruby on Rails intenté subir una imagen a través del cliente POSTMAN REST en formato Base64 . Cuando PUBLICO la imagen, recibo una respuesta 406 no aceptable . Cuando revisé mi base de datos, la imagen estaba allí y se guardó con éxito.

¿Cuál es la razón de este error? ¿Hay algo que necesite especificar en mi encabezado?

Mi petición:

URL --- http://localhost:3000/exercises.json

Encabezamiento:

Content-Type - application/json

Datos brutos:

{ "exercise": { "subbodypart_ids": [ "1", "2" ], "name": "Exercise14" }, "image_file_name": "Pressurebar Above.jpg", "image":"******base64 Format*******" }


"A veces" esto puede significar que el servidor tenía un error interno y quería responder con un mensaje de error (por ejemplo, 500 con carga JSON) pero dado que los encabezados de solicitud no indicaron que aceptaba JSON, en su lugar devuelve un 406. Imagínate. (en este caso: webapp de arranque de primavera).

En ese caso, su operación falló. Pero el mensaje de falla fue oscurecido por otro.


En mi caso, agregué:

Content-Type: application/x-www-form-urlencoded

resolvió mi problema completamente


Mencionaste que estás usando Ruby on Rails como un back-end. No publicaste el código para el método relevante, pero creo que se ve así:

def create post = Post.create params[:post] respond_to do |format| format.json { render :json => post } end end

Cambiarlo a:

def create post = Post.create params[:post]) render :json => post end

Y resolverá tu problema. Funcionó para mí :)


También puede recibir una respuesta 406 cuando las cookies no válidas son almacenadas o referenciadas en el navegador, por ejemplo, cuando se ejecuta localmente un servidor Rails en el modo Dev.

Si ejecutó dos proyectos diferentes en el mismo puerto, el navegador podría hacer referencia a una cookie de una sesión localhost diferente.

Esto me pasó a mí ... me hizo tropezar por un minuto. Buscando en el navegador> Modo desarrollador> Red lo mostró.



const request = require(''request''); const headers = { ''Accept'': ''*/*'', ''User-Agent'': ''request'', }; const options = { url: "https://example.com/users/6", headers: headers }; request.get(options, (error, response, body) => { console.log(response.body); });