【发布时间】:2020-01-21 02:34:03
【问题描述】:
我有一些前端 javascript 向我的后端 rails 服务器发出异步 http 请求。在前端,我 不 使用 XHR(我使用 axios,尽管这与问题并不完全相关)。
在请求中,我设置了以下内容来告诉服务器我正在发送 JSON 并确保我返回 JSON:
const config = {
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
}
};
在我的后端 Rails 控制器中,如果检查请求,我可以验证 Accept 标头:
> request.headers
"HTTP_ACCEPT"=>"application/json, text/plain, */*"
但是 ActionPack/Rails 仍然不尊重这一点,默认为 format 为 :html
> request.format
=> #<Mime::Type:0x00007fe223919f80 @hash=-1773238723920954657, @string="text/html", @symbol=:html, @synonyms=["application/xhtml+xml"]>
为什么会这样?
我知道我可以将 .json 附加到我的请求 URL 以“强制”它指定该格式,但这是唯一的选择吗?我可以很容易地附加它,但它似乎是特定于 Rails 的实现,而不是真正的“正确”方法。
此外,source code for the request.format method 明确将:json 设置为 XHR 请求的格式 - Rails 目前是否只尊重 XHR 请求?
谢谢!
【问题讨论】:
标签: ruby-on-rails json xmlhttprequest http-accept-header