1

我猜这不是 Laravel 问题,而是我正在使用的 PHP 框架。

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

我有一个带有 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'];

我认为上面的设置足以确保跨域会话?

更新

问题不是跨域问题,但似乎更像是请求来自 ajax 的事实。由于创建的 seession varapp.可用,api.但无法通过 ajax 获取请求。

4

2 回答 2

2

问题没有withCredentials: true;在 Angular 端设置,也没有Access-Control-Allow-Credentials: true在我的服务器上。

Cookie 没有随请求一起发送。

在角度配置中:

$httpProvider.defaults.withCredentials = true;

在我在 laravel 的 routes.php 中:

header('Access-Control-Allow-Credentials: true');
于 2013-12-03T12:56:59.017 回答
0

我假设您在同一个盒子上运行您的子域,对吗?

你正在通过 PHP 使用 cookie 对吗?如果是这样,您的 cookie 根域是什么(http://php.net/manual/en/function.setcookie.php

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

于 2013-10-10T22:41:55.533 回答