O que é "406-resposta inaceitável" em HTTP?
na minha aplicação Ruby on Rails tentei enviar uma imagem através do carteiro resto cliente no formato Base64. Quando eu postar a imagem eu estou recebendo uma resposta 406 Não aceitável . Quando eu verifiquei meu banco de dados, a imagem estava lá e foi salva com sucesso.
Qual é a razão para este erro, há alguma coisa que eu precise especificar no meu cabeçalho?
o meu pedido:
URL --- http://localhost:3000/exercises.json
cabeçalho:
Content-Type - application/json
Em Bruto data:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
7 answers
O seu serviço de infra-estrutura está a dizer que o tipo de resposta que está a devolver não é fornecido no Accept HTTP header no pedido do seu cliente.
Ref: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
- Descubra a resposta (Tipo de conteúdo) devolvida pelo Serviço.
- indique isto (tipo de conteúdo) no seu pedido aceite cabecalho.
406 Não É Aceitável O recurso identificado pelo pedido só é capaz de gerar entidades de resposta que tenham características de conteúdo não aceitável de acordo com os cabeçalhos accept enviados no pedido.
406 acontece quando o servidor não consegue responder com o cabeçalho de aceitação especificado no pedido. No seu caso, parece que a aplicação / json para a resposta pode não ser aceitável para o servidor.
def create
post = Post.create params[:post]
respond_to do |format|
format.json { render :json => post }
end
end
Muda para:
def create
post = Post.create params[:post])
render :json => post
end
E vai resolver o teu problema. Funcionou comigo.
Você também pode receber uma resposta 406 quando cookies inválidos são armazenados ou referenciados no navegador - por exemplo, ao executar um servidor Rails no modo Dev localmente.
Se por acaso executou dois projectos diferentes no mesmo porto, o navegador poderá referenciar um cookie de uma sessão localhost diferente.
Isto aconteceu-me...fez-me tropeçar por um minuto. A procura no navegador > modo de desenvolvimento > rede mostrou-o.No meu caso, eu acrescentei:
Content-Type: application/x-www-form-urlencoded
Resolvi completamente o meu problema.
" Às vezes " isso pode significar que o servidor teve um erro interno, e queria responder com uma mensagem de erro (ex: 500 com a carga JSON), mas como os cabeçalhos do pedido não disseram que ele aceitou JSON, ele retorna um 406 em vez disso. Quem diria. (neste caso: webapp de arranque de molas).
Nesse caso, a sua operação falhou. Mas a mensagem de fracasso foi obscurecida por outro.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);
});