现在,在开始学习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配置放在哪里 工匠,如果它可能吗?
答案 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中运行我的前端,他们可以毫无问题地互相交谈。