javascript – Laravel,AngularJS和CORS的路由问题

我一直在寻找解决这个问题的方法.

我有一个带有Laravel 4后端实现的AngularJS Web应用程序,如下所示:

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

在Laravel的routes.PHP文件中,我有以下PHP代码来设置Access-Control标头:

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

我还有一个登录请求的路由设置,如下所示:

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!";
    }
});

在AngularJS中,我有一个AuthService,如下所示:

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;
        }
    };
}]);

提出此请求后,我得到以下内容

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

如果我将Laravel路由和AngularJS服务更改为使用GET,一切都按预期工作.问题源于AngularJS .save()发出OPTIONS请求而不是POST(我不完全理解为什么).

谁能帮助我找到合适的最佳实践解决方案?

谢谢!

解决方法:

以下解决方案有效:

在filters.PHP添加以下内容

App::before(function($request)
{
    if (Request::getmethod() == "OPTIONS") {
        $headers = array(
            'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Headers'=> 'X-Requested-With, content-type',);
        return Response::make('', 200, $headers);
    }
});

在routes.PHP的顶部添加以下内容

header('Access-Control-Allow-Origin: http://app.mydomain.io');

感谢Google Plus社区!

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...