2016-04-04 6 views
0

Ich entwickle eine Ionic (Cordova) -App mit einem Ruby on Rails API. Ich möchte Antwortheader verwenden, um nach der Anmeldung ein Token zurückzugeben. Ich verwende rack-cors Juwel Kreuz Herkunft Antrag Arbeit zu machen:Fügen Sie benutzerdefinierte Antwort Header mit Rack-Cors und 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 

und Trauben gem meine API Routen zu verwalten. Aber ich kann keinen Weg finden, eine Kopfzeile zu meiner Antwort hinzuzufügen, seit ich rack-cors hinzugefügt habe.

Ich habe versucht, dieses:

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

Aber es funktioniert nicht. Was ich auch tue ich mit diesen Header am Ende:

{Cache-Control: "max-age = 0, privat, Must-revalidate" Content-Type: "application/json"}

Kann mir jemand bei diesem Problem helfen?

+0

können Sie diese zu application_controller.rb hinzufügen und Ihre aktuelle protect_from_forgery entfernen. füge 'protect_from_forgery mit:: Ausnahme hinzu, wenn: Proc.new {| c | c.request.format! = 'application/json'} protect_from_forgery mit:: null_session, if: Proc.new {| c | c.request.format == 'application/json'} ' – 7urkm3n

+0

Wenn du lokal arbeitest und rails api nennst, sollte es dir kein Rack-Kabel geben, wie ich weiß. Ich bin gerade nicht mit Cordova erlebt. – 7urkm3n

+0

Tatsächlich arbeite ich lokal. Ich habe versucht, meine protect_from_forgery wie vorgeschlagen zu ändern, aber es gibt mir den bekannten 'Access-Control-Allow-Origin'-Fehler – Shrolox

Antwort

3

I verwendet gem 'devise_token_auth'

Auch hatte ich diese Konfiguration in 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

Verwendung: Expose-Taste in der Konfiguration hat den Trick! Danke – Shrolox

+0

haha, froh das geholfen hat) – 7urkm3n

Verwandte Themen