2012-09-20 10 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に追加します。

これは特に優雅ではありませんが、機能します。特別なurlパラメータ(your_url(accept_header:json))を使用することに似ていますが、user/bookmarked/etcには見られません。

+0

これは完璧な*ソリューションのようです。残念ながら、私が設定したこの新しいアプリでは、何かが非常に間違っています。私はヘッダーがない理由を知っていると思う。フラッシュをログに出力すると、次のようになります。 '' '、@flashes = {" alert "=>" "}、@ now = nil> ' '' – AKWF

+0

問題は、 '' 'before_actions'''をすべて無効にしたことです。 Rails 4.2が広く公開されているアプリケーションの認証をチェックしようとしているのはどういうものなのか分かりません。それはちょうど狂っている。私は文字列 "あなたが最初にログインする必要があります"を検索し、文字通り薄い空気の中に現れます。私のページに行く前に何が起こっているのか分かりましたら、私の要求からすべてが取り除かれている理由を答えてください。それは本当の謎です。 – AKWF

2

あなたは、応答のためのカスタムヘッダーを設定したい場合は、 がそれを行うための場所ですresponse.headers response object ...

を使用してください。ヘッダー属性は、 ヘッダー名をその値にマップするハッシュで、Railsは自動的に の一部を設定します。あなたは、ヘッダーを追加または変更したい場合は、単にこの方法をresponse.headersすること を割り当てる:

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

2

それはどんな言語、設定されていないカスタムヘッダーとページにリダイレクトする不可能ですまたはフレームワークを使用します。つまり、HTTPリダイレクトをトリガーしてクライアント(ブラウザ)にカスタムヘッダーを追加させる方法はありません。

あなた自身が述べたように、リダイレクト自体ではなく、リダイレクトするようにブラウザに指示するレスポンス用のカスタムヘッダーを設定しています。

カスタムヘッダーでHTTPリクエストを発行するようブラウザに指示する唯一の方法は、JavaScriptとXMLHttpRequestオブジェクトを使用することです。