php - Laravel CORS 子域 session

标签 php ajax session laravel

我在通过 ajax 请求的子域中遇到 Auth::check() 问题。 设想: 2 个子域

www.testing.dev
api.testing.dev

这两者之间的单一登录/ session .. 在 laravel config/session.php 中,我设置了 'domain' => ".testing.dev",一切正常,我可以在一个页面中登录并继续登录也在另一页!

但是当我使用 ajax 时出现问题.. 场景:在 api.testing.dev 中,我使用 firebug、js 等执行

$.ajax({
    url: 'http://api.testing.dev/who',
    type: 'GET',
    cache: false
});

api.stesting.dev/who 返回:

public function getWho(){
    return var_dump( Auth::user() );
}

response是我的账号信息!都正确..

如果从 www.testing.dev 我执行相同的 ajax 查询,我得到 Auth::check() 返回 null。虽然我得到正常响应,但跨域设置没有问题。这是我在 api.testing.dev

路由中的 header
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: OPTIONS, POST, GET, PUT, DELETE');
header('Access-Control-Allow-Headers: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Credentials: true');

该网站在带有 wamp 的本地主机中运行。

编辑:使用默认 session 驱动程序'driver' => 'file',在初始登录后,在app/storage/sessions 中有一个文件。如果我从一个子域转到另一个子域,则不会生成其他文件。 虽然当我执行 CORS ajax 时,每次都会生成一个新文件...

最佳答案

看到你的配置,也许你遇到了和我一样的问题。我没有使用 Auth,但每次都使用 session 并得到 null。我通过改变这个解决了它:

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

为此:

header('Access-Control-Allow-Origin: http://localhost:9000');
...
header('Access-Control-Allow-Credentials: true');

我发现的原因是,当您使用凭据时,出于安全目的,它需要指定来源,并且对于 AJAX 请求,它也需要指定凭据。我使用 Angular 并使用 $httpProvider.defaults.withCredentials=true; 完成此操作,但我真的不知道 jQuery 的相应说明,但我希望你能找到它。

使用您最喜欢的调试器(对我来说是 Firebug)检查请求和响应的 header 。他们应该有一个 cookie 属性(它包含带有“laravel”、“token”等的东西)第二次应该等于第一次响应头。

关于php - Laravel CORS 子域 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24231191/

相关文章:

如果时间段已被占用,则 PHP 检查数组

javascript - 我可以只使用 jQuery 验证还是需要 PHP?

php - php判断一个变量是null还是undefined

jquery - 如何使用具有100000条记录的DataTables?

javascript - 使用 PHP、Ajax 从数据库中删除

java - session 中的 ArraryList 附件

php - Slim 框架 - 500 内部服务器错误

php - 添加额外的 HTML 行 : where to put the code?

NHibernate session 管理

security - 将 user_id 存储在 session 中是否危险?