2012-09-20 40 views
8

不知道这是可能的还是有意义的,但是我想在设置HTTP头字段后重新定向。喜欢的东西:带HTTP头的redirect_to

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

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

回答

0

你不能直接这样做,但有一个间接的方式做到这一点

redirect_to的YOUR_URL,闪光:{accept_header: '应用/ JSON'}

,然后检查闪光目标网址中的[:accept_header]。

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

+0

这看起来像一个完美的解决方案。不幸的是,我设置的这款全新应用程序出现了一些非常严重的错误。我想我知道为什么没有标题。打印闪光灯日志仅产生这样的:'''#,@flashes = { “警报”=>“你必须首先登录。“},@ now = nil> ''' – AKWF

+0

问题是,我禁用了所有'''before_actions'''。我无法理解Rails 4.2如何在我已经打开的应用程序中检查身份验证。这只是疯狂。我已经搜索了字符串“你必须先登录”,它真的显得很空虚。如果我能想出发生了什么事它得到我的网页之前,那么我会对为什么一切都得到剥离出来我的请求的答复。这真是一个谜。 – AKWF

2

使用response object ...

如果你想设置自定义标题的回应则response.headers 是做它的地方。 headers属性是一个散列,它将 标题名称映射到它们的值,Rails将自动设置它们中的一些 。如果要添加或更改标题,只要给它分配给 response.headers这样:

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

2

这是不可能重定向到与自定义标题页面设置,无论什么语言或你使用的框架。换句话说,无法触发HTTP重定向并导致客户端(浏览器)添加自定义标头。

正如你自己所说的,你正在设置响应的自定义标题,指示浏览器重定向,而不是重定向本身。

一个站点指示浏览器发出一个自定义头的HTTP请求,唯一的办法是使用JavaScript和XMLHttpRequest对象。