什么是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
- 找出服务返回的响应(内容types)。
- 在请求Accept头中提供这个(内容types)。
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); });