Routing-Problem mit Laravel, AngularJS und CORS

Ich habe weit und breit nach einer Lösung für dieses Problem gesucht.

Ich habe eine AngularJS-Webanwendung mit einer Laravel 4-Backend-Implementierung wie folgt:

http://app.mydomain.io/ = AngularJS web app
http://api.mydomain.io/ = Laravel Back-end

In der routes.php-Datei in Laravel habe ich den folgenden PHP-Code, um die Access-Control-Header zu setzen:

header('Access-Control-Allow-Origin: http://app.mydomain.io');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');

Ich habe auch eine Route für eine Login-Anfrage wie folgt eingerichtet:

Route::post('/login', function()
{
    $email = Input::get('email');
    $password = Input::get('password');
    if (Auth::attempt(array('email' => $email, 'password' => $password)))
    {
        return "Success!";
    } else {
        return "Fail!";
    }
});

In AngularJS habe ich einen AuthService, der wie folgt aussieht:

app.factory('AuthService', ['$resource', '$q', '$cookieStore', function($resource, $q, $cookieStore) {
    var user = null;
    var Service = $resource('//api.mydomain.io/login/', {}, {});
    return {
        login: function(email, password) {
            var deferred = $q.defer();
            Service.save({email: email, password: password}, function(response) {
                $cookieStore.put('user', JSON.stringify(response));
                deferred.resolve(true);
            }, function(error) {
                deferred.reject(error);
            });
            return deferred.promise;
        }
    };
}]);

Wenn diese Anfrage gestellt wird, erhalte ich Folgendes:

XMLHttpRequest cannot load http://api.mydomain.io/login. Invalid HTTP status code 404

Wenn ich die Laravel-Route und den AngularJS-Dienst so ändere, dass GET verwendet wird, funktioniert alles wie erwartet. Das Problem rührt daher, dass AngularJS .save () anstelle von POST eine OPTIONS-Anforderung sendet (ich verstehe nicht vollständig, warum).

Könnte mir jemand bei der richtigen und bewährten Lösung helfen?

Danke!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage