redirect_to with HTTP header

时间:2012-09-20 01:16:17

标签: ruby-on-rails ruby redirect

不确定这是否可行或有意义,但我在设置HTTP标头字段后尝试进行重定向。类似的东西:

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

显然这不起作用,因为request是当前请求,而不是重定向。有没有办法用自定义HTTP标头调用redirect_to

3 个答案:

答案 0 :(得分:3)

使用response object ...

  

如果要为响应设置自定义标头,请选择response.headers   是去做的地方。 headers属性是映射的哈希   标题名称为其值,Rails将设置其中的一些   自动。如果要添加或更改标题,只需指定它即可   以这种方式回应。:

     

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

答案 1 :(得分:2)

不可能重定向到设置了自定义标头的网页,无论您使用何种语言或框架。换句话说,无法触发HTTP重定向并导致客户端(浏览器)添加自定义标头。

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

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

答案 2 :(得分:0)

你不能直接这样做,但这是一种间接的方法吗

  

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

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

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