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

在我的Ruby on Rails应用程序中,我尝试通过POSTMAN REST客户端以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*******" } 

您的操作没有失败。

您的后端服务是说,它所返回的响应types不在客户端请求的Accept HTTP标头中提供。

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

  1. 找出服务返回的响应(内容types)。
  2. 在请求Accept头中提供这个(内容types)。

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

406不可接受由请求标识的资源只能根据请求中发送的接受头,生成具有不可接受的内容特性的响应实体。

当服务器无法响应请求中指定的accept-header时,会发生406。 在你的情况下,似乎应用程序/ 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 

这将解决您的问题。 它为我工作:)

当在浏览器中存储或引用无效的Cookie时,您也可以收到406响应 – 例如,在Dev模式下在本地运行Rails服务器时。

如果碰巧在同一个端口上运行两个不同的项目,浏览器可能会引用来自其他本地主机会话的cookie。

这发生在我身上…绊了我一分钟。 在浏览器>开发者模式>networking显示它。

就我而言,我补充说:

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

完全解决了我的问题。

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