web-dev-qa-db-ja.com

カスタムHTTPヘッダーをどのように追加しますか?

Ruby on Rails現在HerokuでホストされているアプリにカスタムHTTPヘッダーを追加したいと考えています。

65
Jngai1297

つかいます:

response.headers['HEADER NAME'] = 'HEADER VALUE'

特定の応答に追加する必要があるか、すべての応答に追加する必要があるかに応じて、特定のメソッドで、またはアプリケーションコントローラーのbefore_filterメソッドに追加します。

Rails 5-2018年2月24日の更新

コメントで@BrentMatzelleが指摘したように、 Rails 5 の場合:

response.set_header('HEADER NAME', 'HEADER VALUE')
109

Rails 5では、次のソリューションが機能します(アクションメソッドで)

response.set_header("Header-Name", "Header value")

リファレンス: edgeapi

21
Shakil

Rails 4で、application.rbまたはそれぞれの環境ファイルに応答ヘッダーを設定します。それが完了したら、コントローラーの必要な場所でヘッダー値をオーバーライドできます。これを参照してください rl 詳細については。

7
maniempire

In Rails 3以上、単に

headers['Header-Name'] = 'header value'

コントローラで動作します。これは偶数the推奨方法です。 ドキュメント によると、

応答はほとんどがRuby on Railsフレームワーク実装の詳細であり、コントローラーで直接使用しないでください。コントローラーはActionController::Baseで定義されたメソッドを使用する必要がありますたとえば、HTTP応答のコンテンツMIMEタイプを設定する場合は、ActionController::Base#headersの代わりにResponse#headersを使用します。

そして これはRails 5.2 ではまだ当てはまります。

5
Franklin Yu

In Rails 4は次のように動作します:

class API::V1::BaseController 
  after_action :set_version_header

  protected
    def set_version_header
        response.headers['X-ComanyName-Api-Version'] = 'V1'
    end
end
2
Slava Zharkov