CORS与Laravel 4和外部Angular

时间:2014-01-02 12:01:52

标签: angularjs laravel-4 cors

我是noob laravel和有角度的用户。几天前我写了非常简单的api来学习如何工作api。现在我试图用非常简单的角度脚本从另一个位置到达它。这是我使用的内部域地址而不是localhost /../ ..: http://3burcak.dev/api/v1/kategori ,这是kategori控制器的索引方法:

    public function index()
{
    $cat = EmlakKategori::all();
    return Response::json(array(

        'cat'   => $cat->toArray(),
        ));
}

所以,这很简单。

当我尝试通过我非常简单的角度js到达它时,如果我不使用标题为cors,我会得到OPTIONS 404 not found错误。但是,如果我在filters.php中使用这些标题,我会收到OPTIONS 500 Internal Server错误。

App::before(function($request)
    {
            if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
            $statusCode = 204;

            $headers = [
                'Access-Control-Allow-Origin'      => '*',
                'Access-Control-Allow-Methods'     => 'GET, POST, OPTIONS',
                'Access-Control-Allow-Headers'     => 'Origin, Content-Type, Accept, Authorization, X-Requested-With',
                'Access-Control-Allow-Credentials' => 'true'
            ];

            return Response::make(null, $statusCode, $headers);});


    App::after(function($request, $response)
    {
        $response->headers->set('Access-Control-Allow-Origin', '*');
        $response->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
        $response->headers->set('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Requested-With');
        $response->headers->set('Access-Control-Allow-Credentials', 'true');
        return $response;
    });

这两种情况,我在Firebug的Response选项卡中看到我的json数据......这是大写字母;

Screenshot

这是我非常简单的角度

function getKat($http, $scope)
    {
    $http({
        method: 'json',
        url: 'http://3burcak.dev/api/v1/kategori'
    })
    .success(function(data){
        $scope.items = data.cat;
    })
    .error(function(data) {
        console.log('error');
    });
    }

我无法解决这个问题。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

我已经解决了, 我将角度的方法从json改为GET,最后它起作用了。