What is “406-Not Acceptable Response” in HTTP?
在我的RubyonRails应用程序中,我尝试通过PostmanREST客户机以base64格式上传图像。当我发布图片时,我得到了406个不可接受的回复。当我检查数据库时,图像就在那里并成功保存。
这个错误的原因是什么?我的头中有什么需要指定的吗?
我的请求:
url---
标题:
1 | Content-Type - application/json |
原始数据:
1 2 3 4 5 6 7 8 9 10 11 | { "exercise": { "subbodypart_ids": [ "1", "2" ], "name":"Exercise14" }, "image_file_name":"Pressurebar Above.jpg", "image":"******base64 Format*******" } |
号
你的手术没有失败。
后端服务说它返回的响应类型没有在客户端请求的accept-http头中提供。
参考:http://en.wikipedia.org/wiki/list_http_header_fields
http://en.wikipedia.org/wiki/http_status_code->406
406 Not Acceptable
The resource identified by the request is only capable of generating response entities which have content characteristics not
acceptable according to the accept headers sent in the request.
号
406发生在服务器无法使用请求中指定的接受头响应时。在您的情况下,服务器可能无法接受响应的application/json。
您提到您使用RubyonRails作为后端。您没有发布相关方法的代码,但我猜它看起来是这样的:
1 2 3 4 5 6 | def create post = Post.create params[:post] respond_to do |format| format.json { render :json => post } end end |
更改为:
1 2 3 4 | def create post = Post.create params[:post]) render :json => post end |
号
它会解决你的问题。这对我很有用。)
"有时"这可能意味着服务器有一个内部错误,并希望用一条错误消息(例如:500和JSON有效负载)来响应,但是由于请求头没有说它接受JSON,所以它返回406。去想一想。(在本例中:Spring Boot webapp)。
在这种情况下,您的操作确实失败了。但是失败的信息却被另一个掩盖了。
在我的案例中,我补充道:
1 | Content-Type: application/x-www-form-urlencoded |
完全解决了我的问题。
当浏览器中存储或引用无效cookie时,您也可以收到406响应-例如,当以开发人员模式本地运行Rails服务器时。
如果您碰巧在同一端口上运行了两个不同的项目,浏览器可能会引用来自不同localhost会话的cookie。
这件事发生在我身上……绊倒了我一分钟。在浏览器>开发人员模式>网络中显示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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); }); |
。