Ich habe eine schreibgeschützte API und es funktioniert gut lokal mit einem Vagrant-Setup. Live in meiner Heroku-App wird jede API-Anfrage aufgrund eines CORS-Fehlers abgelehnt: "Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Daher ist' Null 'nicht erlaubt."CORS Problem mit Grape API und Heroku
In meiner API der Basisklasse, ich habe nach dem die Header zu setzen:
module API
class Base < Grape::API
before do
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'GET, OPTIONS'
headers['Access-Control-Request-Method'] = '*'
headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
end
mount API::V1::Base
end
end
Ich vermute, dass dieser before
Anruf nicht gefeuert-wenn wird ich eine puts Anweisung innerhalb davon verwenden, diese Aussage tut nicht in meiner Konsole mit dem Rest der Ausgabe erscheinen.
Ich bin ratlos. Hoffentlich hat jemand etwas Erfahrung damit. Vielen Dank.
Bearbeiten: Ich habe auch Grape's CORS instructions gefolgt, aber das gleiche Ergebnis erhalten.
Erfolg. Ich benutzte die rack-cors Juwel und die folgende:
#application.rb
config.middleware.use Rack::Cors do
allow do
origins '*'
# location of your API
resource '/api/*', :headers => :any, :methods => [:get, :post, :options, :put]
end
end
Ja, ich hatte die erfolgreiche Lösung bereits in meinem ursprünglichen Beitrag gepostet. Vielen Dank. – Stephen
Oh. Ich habe gerade festgestellt, dass meine Antwort, die ich aus der Traube der Trauben kopiert habe, nicht die Optionsmethode enthielt. Es ist jetzt aktualisiert. ([: get,: post,: options,: put] statt nur: get) – Ryanzyy
Nur für Rails-Framework, innerhalb config.ru, fügen Sie Zeile 'run API :: V1 :: Base' vor Zeile 'run Rails. Anwendung " – yozzz