2016-04-10 24 views
3

私は、Rails APIサーバからJSONを要求するためにAngular 2を使用しています。私のサーバはヘッダX-Total-Count: 10で応答するように設定されています。Angular 2レスポンスヘッダを取得する方法

Server Response

をしかし、私は、HTTPレスポンスconsole.log(res.headers)しようとすると、私はContent-TypeCache-Control_headersMapを受け取る:私のサーバーが正常にこれらのヘッダを送信している

enter image description here

をここに私のラックです::コルスの設定:

config.middleware.insert_before 0, "Rack::Cors" do 
    allow do 
     origins '*' 
     resource '*', headers: :any, methods: [:get, :post, :options, :patch, :delete], expose: ['X-Total-Count'] 
    end 
end 

そして、私は、コントローラのヘッダーを設定しています方法:

def index 
    ... 
    @posts = ... 

    response.headers['X-Total-Count'] = '10' 
    response.headers['Access-Control-Allow-Headers'] = 'X-Total-Count' 

    render json: @posts 
    end 

どのように私はX-Total-Count_headersMapに表示されていることを確認することができますか?または、X-Total-Countの値の応答にはどのようにアクセスできますか?

答えて

6

問題が見つかりました:

サーバーは、ヘッダーに次返す必要があります。 Rack::Cors構成でヘッダーを公開していたにもかかわらず、fix this deprecationに変更するまでは機能しませんでした。現在、config/initializers/cors.rbに設定されている次の構成では、ヘッダーが適切に公開されます。

Rails.application.config.middleware.insert_before 0, Rack::Cors do 
    allow do 
    origins '*' 
    resource '*', 
    headers: :any, 
    methods: [:get, :post, :put, :patch, :delete, :options, :head], 
    expose: ['X-Total-Count'] 
    end 
end 
1

this bug posted in alphaによると、これは特定のヘッダーが「安全でない」とみなし、アクセスを拒否したために発生します。このスレッドの修正は、サーバーレスポンスにヘッダーを追加することでした。

access-control-expose-headers: x-total-count 
+0

私は上記のRack Corsの設定を追加しています。 'X-Total-Count'は公開されていますが、まだ動作していません。 –

1

CORSのためです。 CORSによって有効になっている場合にのみ、地図内のヘッダーを見ることができます。

Access-Control-Allow-Headers: X-Total-Count 
+0

まだ運がありません。私は現在持っている 'Rack :: Cors'設定を投稿しました。また、 'Access-Control-Allow-Headers:X-Total-Count'にする必要はありませんか?私は両方のバージョンにショットを与えました。 –

+1

あなたのリクエストはシンプルなものか、あらかじめ選んだリクエストですか? –

関連する問題