我猜不是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