2012-09-20 50 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對象。