首页 文章

什么是HTTP中的“406-Not Accepled Response”?

提问于
浏览
156

在我的Ruby on Rails应用程序中,我尝试以Base64格式通过POSTMAN REST客户端上传图像 . 当我发布图像时,我得到了406 Not Acceptable Response . 当我检查我的数据库时,图像就在那里并成功保存 .

这个错误的原因是什么,我需要在 Headers 中指定什么?

我的请求:

网址--- http://localhost:3000/exercises.json

Headers :

Content-Type  -  application/json

原始数据:

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

7 回答

  • 0

    你提到你使用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
    

    它会解决你的问题 . 它对我有用:)

  • 227

    你的手术没有失败 .

    您的后端服务表示客户端请求中的Accept HTTP标头中未提供它返回的响应类型 .

    参考:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

    • 找出Service返回的响应(内容类型) .

    • 在请求中提供此(内容类型)Accept标头 .

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

  • 2

    406不可接受请求标识的资源仅能够根据请求中发送的接受标头生成具有不可接受的内容特征的响应实体 .

    当服务器无法使用请求中指定的accept-header进行响应时,会发生406 . 在您的情况下,响应的application / json似乎可能不被服务器接受 .

  • 1

    当在浏览器中存储或引用无效cookie时,您也可以收到406响应 - 例如,在本地以开发模式运行Rails服务器时 .

    如果您碰巧在同一端口上运行两个不同的项目,则浏览器可能会引用来自不同localhost会话的cookie .

    这发生在我身上......绊了我一分钟 . 浏览器>开发者模式>网络显示它 .

  • 6

    在我的情况下,我补充说:

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

    完全解决了我的问题 .

  • 2

    “有时”这可能意味着服务器出现内部错误,并希望以错误消息响应(例如:带有JSON有效负载的500)但由于请求标头没有说它接受了JSON,因此它返回406 . 去搞清楚 . (在这种情况下:spring boot webapp) .

    在这种情况下,您的操作确实失败了 . 但失败的信息被另一个人掩盖了 .

  • 36
    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);
    });
    

相关问题