允许工匠的角色服务

时间:2013-12-26 22:33:32

标签: php apache angularjs cors

现在,在开始学习Angularjs和Laravel 4之后,我真的很喜欢用一个终端命令设置工作开发服务器的方式,而无需设置虚拟主机或类似的东西。

...然而

我想单独开发我的前端所以我可以利用自耕农和gruntjs的精彩组合,因为如果我把所有东西都放在laravel公共文件夹中(或者至少我不知道怎么做),我真的不能这样做让我有以下情况:

我在localhost:9000

有一个前端grunt服务器

我在localhost:8000

有一个laravel 4服务器

这当然意味着为了让Angularjs与Laravel交谈,我必须允许CORS。在Apache中这很简单:只需将Header add Access-Control-Allow-Origin "localhost:9000"添加到httpd.conf的目录部分,就可以使这个url与localhost进行通信。

  

现在,在通过提供东西时我应该把这个cors配置放在哪里   工匠,如果它可能吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。您可以在config/cors.php中找到cors配置。默认情况下,仅api/*条路由允许所有起源。您可以像下面这样添加自己的路线(例如oauth

'path' => ['api/*', 'oauth/*']

答案 1 :(得分:0)

好吧发现答案至少有一个适合我。似乎我从错误的方向接近问题,因为我专注于Apache而不是Laravel本身。

为了通过工匠在开发环境中允许跨源响应,应在filters.php中插入以下代码:

<?php
...
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;
});
...

如果它是相关的,我还在Apache configation中添加了'Access-Control-Allow-Origin' => '*'

所以现在我可以在localhost:8000中运行我的服务器环境,在localhost:9000中运行我的前端,他们可以毫无问题地互相交谈。