私は自分のレールアプリにGoogleプレイスAPIを実装しようとしています。Railsクロスドメインajaxリクエスト(CORS)
これはAjaxのリクエストからデータをフェッチしている機能を使用しようとすると、私は取得していますエラーです:
XMLHttpRequest cannot load . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
私はラックCORSの宝石を使用していると私はこのスニペットを追加しました私のconfig/application.rbファイルに:
config.middleware.insert_before 0, "Rack::Cors" do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
これが私の見解(CoffeeScriptの)からAJAX要求である:
$.ajax
url: url
dataType: "json"
type: "GET"
は、私は私のapplication_controller
before_filter :cors_preflight_check
after_filter :cors_set_access_control_headers
def cors_set_access_control_headers
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Allow-Headers'] = '*'
headers['Access-Control-Max-Age'] = "1728000"
end
def cors_preflight_check
if request.method == :options
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Allow-Headers'] = '*'
headers['Access-Control-Max-Age'] = '1728000'
render :text => '', :content_type => 'text/plain'
end
end
にこの部分を追加しましたし、これは、私のルートに
match '*path' => 'application#cors_preflight_check', :via => :options
私は「cors_preflight_check」メソッドは私の要求によってトリガされていないことに気付きましたファイル。 (私のビューで特定のリンクをクリックしたときにAJAXリクエストを行います)
私のリクエストヘッダーは変更されていません。
:それは場所APIによってこれらのスレッドで書かれて試みたすべてをサポートしていないので、
(アクセス制御 - 許可 - 起源は、ヘッダを要求するためには追加されません)
JSONPはオプションではありません
- https://github.com/cyu/rack-cors/issues/33
- Can't get rack-cors working in rails application(config.middleware.insert 0、ラック:: CORSを行う)
- https://demisx.github.io/rails-api/2014/02/18/configure-accept-headers-cors.html
- POST Method not working in rack-cors rails 4(アプリのコントローラのアクション後&前に追加)
- Add custom response header with Rack-cors and Grape(使用:キーを公開)
何に展開していますか?これはあなたのローカル開発環境ですか?私の展開では、私のケースのnginxの設定ファイルでサーバ設定の中でヘッダを設定する必要がありました。 –
私はWebrickを使用していると信じています、あなたは説明できますか? – MaxDBN