不确定这是否可行或有意义,但我在设置HTTP标头字段后尝试进行重定向。类似的东西:
request.headers['Accept'] = 'application/json'
redirect_to url
显然这不起作用,因为request
是当前请求,而不是重定向。有没有办法用自定义HTTP标头调用redirect_to
?
答案 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) - 但它不会被用户看到/书签/等。