我猜不是Laravel问题,但它是我正在使用的PHP框架。在Laravel PHP和AngularJS中的子域之间维护会话
我有以下子域:app.hostname.dev
和api.hostname.dev
我有对API的API一个laravel PHP应用程序。和应用程序上的AngularJS SPA应用程序。
如果我在API上创建一个会话变量,它只能用于该子域。如果我从前端执行GET AJAX请求,则下面的var_dump将返回NULL。如果我将我的API端点更改为相同的子域(app.hostname.dev),我会得到正确的会话变量。
//Session::put('test', 'TESTING');
var_dump(Session::get('test'));
这里是我的laravel会话设置:
'driver' => 'cookie', // also tried database
'path' => '/',
'domain' => '.hostname.dev',
这里是我的AngularJS设置:
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
我觉得上面的设置就足以保证跨域会话?
UPDATE
问题不是跨域问题,但似乎更像是一个事实,即请求通过AJAX来了。作为app.
创建的seession var在api.
上可用,但无法通过ajax获取请求。
更好的方法是将'header(...)'放在'app/filters.php'中'App :: before',它在请求之前运行。 Routes.php不应该负责或关心标题,所以不要离开它。 – davidnknight
好点谢谢! – iamjonesy