¿Qué es" 406-Respuesta no aceptable " en HTTP?


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 estoy recibiendo una 406 Respuesta 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 necesito especificar en mi encabezado?

Mi petición:

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

Cabecera:

Content-Type  -  application/json

Raw datos:

{
    "exercise": {
        "subbodypart_ids": [
            "1",
            "2"
        ],
        "name": "Exercise14"
    },
    "image_file_name": "Pressurebar Above.jpg",
    "image":"******base64 Format*******"
}
Author: ekad, 2013-01-10

7 answers

Su operación no falló.

Su servicio backend está diciendo que el tipo de respuesta que está devolviendo no se proporciona en el encabezado HTTP Accept en su solicitud de cliente.

Ref: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

  1. Averigüe la respuesta (tipo de contenido) devuelta por el Servicio.
  2. Proporcione esto (tipo de contenido) en el encabezado Aceptar solicitud.

Http://en.wikipedia.org/wiki/HTTP_status_code -> 406

 216
Author: TheWhiteRabbit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-31 06:30:27

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

406 sucede 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.

 34
Author: ashutosh raina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-10 06:17:03

Mencionaste que estás usando Ruby on Rails como backend. No publicar el código para el método relevante, pero mi conjetura es que se ve algo como esto:

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

Cámbialo a:

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

Y resolverá su problema. Me funcionó:)

 6
Author: itamaryu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-14 13:40:50

También puede recibir una respuesta 406 cuando se almacenan cookies no válidas o se hace referencia a ellas en el navegador, por ejemplo, cuando se ejecuta un servidor Rails en modo Dev localmente.

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

Esto me ha pasado a mí...me hizo tropezar por un minuto. Mirando en navegador > Modo de desarrollador > Red lo mostró.

 2
Author: etusm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-31 22:50:24

En mi caso, agregué:

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

Resuelto mi problema por completo.

 1
Author: Kadir Erturk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-29 23:39:49

"Sometimes" 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 como las cabeceras de la solicitud no decían que aceptaba JSON, devuelve un 406 en su lugar. Imagínate. (en este caso: spring boot webapp).

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

 1
Author: rogerdpack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-08 22:08:09
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);
});
 0
Author: JP Ventura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-09 19:56:00