我有一些前端 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 的实现,而不是真正的“正确”方法。
此外,该方法的源代码request.format
明确设置:json
为 XHR 请求的格式——rails 目前是否只尊重 XHR 请求?
谢谢!