Что такое" 406-неприемлемый ответ " в HTTP?
в моем приложении Ruby on Rails я попытался загрузить изображение через почтальона остальное клиент в base64. Когда я публикую изображение, я получаю 406 Неприемлемый Ответ. Когда я проверил свою базу данных, изображение было там и было успешно сохранено.
в чем причина этой ошибки, есть все, что мне нужно указать в моем заголовке?
мой запрос:
URL-адрес --- http://localhost:3000/exercises.json
Content-Type - application/json
исходные данные:
{
"exercise": {
"subbodypart_ids": [
"1",
"2"
],
"name": "Exercise14"
},
"image_file_name": "Pressurebar Above.jpg",
"image":"******base64 Format*******"
}
7 ответов
Ваша операция не удастся.
ваш серверный сервис говорит, что тип ответа, который он возвращает, не указан в принимать HTTP-заголовок в вашем клиентском запросе.
Ref:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
- узнайте ответ (тип контента), возвращаемый службой.
- укажите это (тип контента) в вашем запросе Accept заголовок.
406 Не Приемлемо Ресурс, идентифицированный запросом, способен генерировать только объекты ответа, которые не имеют характеристик содержимого приемлемо в соответствии с заголовками accept, отправленными в запросе.
406 происходит, когда сервер не может ответить с заголовком accept, указанным в запросе. В вашем случае кажется, что application / json для ответа может быть неприемлемым для сервера.
Вы упомянули, что используете Ruby on Rails в качестве бэкэнда. Вы не опубликовали код для соответствующего метода, но я предполагаю, что он выглядит примерно так:
def create
post = Post.create params[:post]
respond_to do |format|
format.json { render :json => post }
end
end
меняем его на:
def create
post = Post.create params[:post])
render :json => post
end
и это решит вашу проблему. Это сработало для меня:)
вы также можете получить ответ 406, когда недопустимые куки хранятся или ссылаются в браузере - например, при локальном запуске сервера Rails в режиме Dev.
Если вам случилось запустить два разных проекта на одном порту, браузер может ссылаться на cookie из другого сеанса localhost.
Это случилось со мной...подставил мне подножку на минуту. Просмотр в браузере > режим разработчика > сеть показал это.
в моем случае, я добавил:
Content-Type: application/x-www-form-urlencoded
полностью решил мою проблему.
"иногда" это может означать, что сервер имел внутреннюю ошибку и хотел ответить сообщением об ошибке (например, 500 с полезной нагрузкой JSON), но поскольку заголовки запросов не сказали, что он принял JSON, он возвращает 406 вместо этого. Иди разберись. (в этом случае: spring boot webapp).
в этом случае, ваша операция не удастся. Но сообщение об отказе было затемнено другим.
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);
});