Что такое" 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);
});
