Ich konnte das mit Hilfe von @ Akiomis Antwort herausfinden:
In meinem routes.rb
habe ich den folgenden Code am Anfang der Datei hinzugefügt:
Als Nächstes habe ich in meinem Anwendungscontroller Folgendes hinzugefügt:
%Vor% Zusammen mit den Überschriften in config/application.rb
:
Ja, beachte die 'Access-Control-Allow-Headers:' => 'Origin, X-Requested-With, Content-Type, Accept'
, die nicht in meiner ursprünglichen Frage enthalten war, das ist eines der großen Probleme.
Fügen Sie den folgenden Code hinzu:
In config/routes.rb
:
In controllers/student_controller.rb
:
Oder Sie können rack-cors verwenden.
In einigen Fällen führt ein Browser eine Preflight-Anfrage durch: Anstatt die Anfrage tatsächlich zu machen, führt er zuerst eine OPTIONS-Anfrage an dieselbe URL durch, um herauszufinden, welche Werte die verschiedenen CORS-Header haben (Mehr über Preflight) hier ). Wenn diese Anfrage erfolgreich ist und die Header die richtigen Werte haben, führt sie die eigentliche Anfrage durch.
Sie haben keine Route für diese Optionsanforderungen hinzugefügt, also gehen sie zur Seite rails 404, die die CORS-Header nicht enthält.
Die OPTIONS-Antwort muss nur dieselben CORS-Header festlegen, die Sie normalerweise während einer Anfrage festlegen würden. Es sollte nichts anderes tun. Zum Beispiel
%Vor% Beachten Sie, dass Sie möglicherweise andere CORS-Header festlegen müssen, z. B. Access-Control-Allow-Credentials
, Access-Control-Allow-Headers
Wenn dies funktioniert, sollten Sie in Betracht ziehen, dies etwas zu straffen - Sie öffnen Ihre App möglicherweise, um Site-Scripting-Angriffe zu umgehen.
Tags und Links ruby-on-rails ajax cors rails-api