2017-04-27 1 views
1

config/application.rbWarum funktioniert Rack-Cors nicht?

require_relative 'boot' 
require 'rails/all' 
Bundler.require(*Rails.groups) 

module MyApp 
class Application < Rails::Application 
    config.middleware.insert_before ActionDispatch::Static, Rack::Cors do 
    allow do 
    origins '*' 
    resource '*', :headers => :any, :methods => [:get, :post, :options, :patch, :delete] 
     end 
    end 
    end 
end 

Gemfile

gem 'rack-cors', :require => 'rack-cors' 

another gems… 

Bündel exec Rake-Middleware

use Rack::Cors 

another middleware… 

Dies ist ein Fehler gezeigt Konsolprotokoll

XMLHttpRequest cannot load https://example.com. 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. The response had HTTP status code 405.

Was soll ich tun ??

+0

verwenden Sie Rails 5 oder Rails 4? – akbarbin

+0

@MuhamadAkbarBinWidayat Ich benutze Rails 5! – faara

+0

Lesen Sie die Fehlermeldung erneut. 'XMLHttpRequest kann https: // example.com' nicht laden. Es spielt keine Rolle, wie viele Cors-Header Sie auf localhost senden, wenn Sie Daten von 'https: // example.com' laden. ;) – max

Antwort

-1

Versuchen Sie, Ihren Code so zu ändern. Ich habe versucht in meinen Schienen 5 nur noch unter Linien zu arbeiten. Versuchen Sie dann, den Server neu zu starten.

module YourApp 
    class Application < Rails::Application 
    # Rails 5 

    config.middleware.insert_before 0, Rack::Cors do 
     allow do 
     origins '*' 
     resource '*', :headers => :any, :methods => [:get, :post, :options] 
     end 
    end 
    end 
end 

Ich hoffe, es funktioniert.

+0

Danke für die Antwort! Aber leider hat sich die Fehlermeldung nicht geändert ... – faara

+0

Das beantwortet die Frage nicht. Die Fehlermeldung besagt eindeutig, dass eine Ajax-Anforderung an "http: // example.com" (die IANA-Beispieldomäne) und nicht an localhost erfolgt. Die CORS-Header auf dem Rails-Server sind in der Tat völlig irrelevant. – max

+0

@faara können Sie zeigen, wie der Ajax die API nennt? – akbarbin