2013-10-10 2 views
1

Не определенно проблема с Laravel, я предполагаю, но это каркас PHP, который я использую.Поддержание сеанса между субдоменами в Laravel PHP и AngularJS

У меня есть следующие подобласти: app.hostname.dev и api.hostname.dev

У меня есть Laravel PHP приложение с API на API. и приложение AngularJS SPA в приложении.

Если я создаю переменную сеанса в API, она доступна только для этого поддомена. Если я делаю запрос GET AJAX из front-end, 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. В качестве seession var, созданного на app., можно найти на api., однако он недоступен либо через запрос ajax get.

ответ

2

Проблема не была установлена ​​withCredentials: true; на угловой стороне и не имеет Access-Control-Allow-Credentials: true на моем сервере.

Куки-файлы не отправляются с запросом.

В угловой конфигурации:

$httpProvider.defaults.withCredentials = true; 

В моей routes.php в Laravel:

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

Лучше поставить' header (...) 'в' app/filters.php' в 'App :: before', который выполняется перед запросом , Routes.php не несет ответственности за заголовок или заботится о нем, поэтому не оставляйте его там. – davidnknight

+0

Хорошее спасибо! – iamjonesy

0

Я предполагаю, что вы используете поддомены на одном и том же поле справа?

И вы используете cookie через PHP правильно? Если да, то какой у вас корневой домен cookie (http://php.net/manual/en/function.setcookie.php)

Если ваш домен cookie установлен в корневой каталог «hostname.dev», он должен быть доступен в обоих ваших доменах.

+0

Да, это на самом деле часть того же проекта, а также. Я установил домен cookie через конфигурацию сеанса Laravel. Я попробовал .hostname.dev, а также без '' '.''' – iamjonesy

Смежные вопросы