Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Laravel PHP和AngularJS中维护子域之间的会话_Javascript_Php_Session_Angularjs_Laravel 4 - Fatal编程技术网

Javascript 在Laravel PHP和AngularJS中维护子域之间的会话

Javascript 在Laravel PHP和AngularJS中维护子域之间的会话,javascript,php,session,angularjs,laravel-4,Javascript,Php,Session,Angularjs,Laravel 4,我想这不是Laravel的问题,但我使用的是PHP框架 我有以下子域:app.hostname.dev和api.hostname.dev 我有一个laravel PHP应用程序,API上有一个API。还有一个AngularJS水疗应用程序 如果我在API上创建一个会话变量,它只对该子域可用。如果我从前端执行GET AJAX请求,下面的var_dump将返回NULL。如果我将API端点更改为相同的子域(app.hostname.dev),我将获得正确的会话变量 //Session::put('te

我想这不是Laravel的问题,但我使用的是PHP框架

我有以下子域:
app.hostname.dev
api.hostname.dev

我有一个laravel PHP应用程序,API上有一个API。还有一个AngularJS水疗应用程序

如果我在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',
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
以下是我的AngularJS设置:

'driver' => 'cookie', // also tried database
'path' => '/',
'domain' => '.hostname.dev',
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
我认为上述设置足以确保跨域会话

更新


这个问题不是跨域的问题,但更像是请求是通过ajax发出的。作为在
应用程序上创建的seession变量。
api上可用。
但是通过ajax get请求两者都不可用。

我假设您在同一个框中运行您的子域,对吗

您通过PHP使用cookie,对吗?如果是,您的cookie根域是什么()


如果您的cookie域设置为root“hostname.dev”,那么它应该在您的两个子域中都可用。

问题不是使用凭据设置
:true位于角度侧,并且在我的服务器上没有
访问控制允许凭据:true

Cookie未随请求一起发送

在角度配置中:

$httpProvider.defaults.withCredentials = true;
在laravel中的my routes.php中:

header('Access-Control-Allow-Credentials: true');

是的,它实际上也是同一个项目的一部分。我已经通过Laravel会话配置设置了cookie域。我尝试了.hostname.dev,也没有使用
更好地将
标题(…)
放在
app/filters.php
app::before
中,它在请求之前运行。php不应该负责或关心标题,所以不要把它放在那里。