11

不确定这是否可行或是否有意义,但我正在尝试在设置 HTTP 标头字段后进行重定向。就像是:

request.headers['Accept'] = 'application/json'
redirect_to url

显然这不起作用,就像request当前请求一样,而不是重定向。有什么方法可以调用redirect_to自定义 HTTP 标头吗?

4

3 回答 3

4

无论您使用什么语言或框架,都无法重定向到设置了自定义标题的页面换句话说,没有办法触发 HTTP 重定向并导致客户端(浏览器)添加自定义标头。

正如您自己提到的,您正在为指示浏览器重定向的响应设置自定义标头,而不是为重定向本身。

站点指示浏览器发出带有自定义标头的 HTTP 请求的唯一方法是使用 Javascript 和XMLHttpRequest对象。

于 2016-12-19T08:46:21.263 回答
3

使用响应对象...

如果您想为响应设置自定义标头,那么 response.headers 就是这样做的地方。headers 属性是一个将标头名称映射到它们的值的散列,Rails 会自动设置其中的一些。如果要添加或更改标头,只需将其分配给 response.headers 以这种方式:

response.headers["Content-Type"] = "application/pdf"

于 2015-11-30T23:19:22.223 回答
0

你不能直接做,但有一种间接的方法

redirect_to your_url, flash: { accept_header: 'application/json' }

然后检查目标 url 中的 flash[:accept_header]。

这不是特别优雅,但它有效。它类似于使用特殊的 url 参数 - your_url(accept_header: json) - 但它不会被用户/书签/等看到。

于 2015-04-15T14:39:32.397 回答