2016-04-04 2 views
0

Ruby on Rails APIを使用してIonic(Cordova)アプリケーションを開発しています。 ログイン後に応答ヘッダーを使用してトークンを返す必要があります。私のAPIのルートを管理するためのRack-corsとGrapeでカスタムレスポンスヘッダを追加する

application.rb

config.middleware.insert_after Rails::Rack::Logger, Rack::Cors, :logger => Rails.logger do 
     allow do 
     origins '*' 
     resource '/api/*', :headers => :any, :methods => [:get, :post, :options, :put] 
     end 
    end 

とブドウ宝石: 私はクロスオリジンリクエスト仕事をするためにrack-cors宝石を使用しています。 しかし、私はrack-corsを追加したので、私の応答にヘッダーを追加する方法を見つけることができません。

header('Access-Token', user.token.key) 

しかし、それは動作しません:

は、私はこれを試してみました。どのような私は、これらのヘッダで終わるの操作を行います。

{キャッシュ制御: "最大エージング= 0、プライベート、必要-再検証"、コンテンツタイプ: "アプリケーション/ jsonの"}

誰でもこの問題を解決できますか?

+0

これをapplication_controller.rbに追加して、現在のprotect_from_forgeryを削除できます。 :protect_from_forgeryに::例外を追加してください:Proc.new {| c | c.request.format!= 'application/json'} protect_from_forgery with::null_session、if:Proc.new {| c | c.request.format == 'application/json'} ' – 7urkm3n

+0

yrがローカルで作業していてrails apiを呼び出している場合は、私が知っているようにラックコードを渡すべきではありません。私はちょうどコードワーを経験していません。 – 7urkm3n

+0

私は現地で働いています。あなたが提案したようにprotect_from_forgeryを変更しようとしましたが、よく知られている「Access-Control-Allow-Origin」エラーが発生します – Shrolox

答えて

3

私はまたgem 'devise_token_auth'

を使用し、私はapplication.rbにこの設定を持っていました。

class Application < Rails::Application 
    # Do not swallow errors in after_commit/after_rollback callbacks. 
    config.active_record.raise_in_transactional_callbacks = true 

    config.middleware.use Rack::Cors do 
     allow do 
     origins '*' 
     resource '*', 
      :headers => :any, 
      :expose => ['access-token', 'expiry', 'token-type', 'uid', 'client'], 
      :methods => [:get, :post, :options, :delete, :put] 
     end 
    end 

    end 
+0

使い方:設定でキーを公開するトリックをやりました!ありがとう – Shrolox

+0

ハハ、喜んで助けた) – 7urkm3n

関連する問題