API を CORS で動作させるのに苦労しています。http://kellishaver.tumblr.com/post/40758797489/cors-headers-with-deviseの指示に従いました。
これを私のapplication.rbに追加しました:
config.middleware.use "Cors"
config.middleware.insert_before Warden::Manager, "Cors"
これを /lib/cors.rb に追加しました:
class Cors
def initialize(app)
@app = app
end
def call(env)
status, headers, response = @app.call(env)
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'DELETE, GET, HEAD, OPTIONS, POST, PUT'
headers['Access-Control-Max-Age'] = "1728001"
[status, headers, response]
end
end
私は同じ問題を解決しようとしており、API を Chrome (または他の場所) から呼び出せるようにしています。問題は、カスタム API Devise 呼び出しを除いて、すべての呼び出しが機能することです。Chrome 開発ツールで見ると、Devise API 呼び出しで「OPTIONS」の奇妙な 404 エラーが発生します。
私のDevise APIは次のようになります...
class Api::V1::SessionsController < Devise::SessionsController
skip_before_filter :verify_authenticity_token,
:if => Proc.new { |c| c.request.format == 'application/json' }
respond_to :json
def create
warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
render :status => 200,
:json => { :success => true,
:info => "Logged in",
:data => { :auth_token => current_user.authentication_token },
:id => current_user.id}
end
...
カスタムの Devise API 呼び出しが機能しないのに、他の呼び出しが機能する理由についてのアイデアはありますか?
ありがとう!