Act*_*Dev 5 php ajax session laravel
我通过ajax请求在子域中遇到Auth :: check()问题.场景:2个子域
www.testing.dev
api.testing.dev
Run Code Online (Sandbox Code Playgroud)
这两个之间的单一登录/会话..在我设置的laravel config/session.php中'domain' => ".testing.dev",一切正常,我能够在一个页面登录并继续登录其他页面!
但是,当我使用ajax时,有一个问题..场景:进入api.testing.dev,我用firebug,js执行任何操作
$.ajax({
url: 'http://api.testing.dev/who',
type: 'GET',
cache: false
});
Run Code Online (Sandbox Code Playgroud)
的api.stesting.dev/who回报:
public function getWho(){
return var_dump( Auth::user() );
}
Run Code Online (Sandbox Code Playgroud)
回复是我帐户的信息!全对了..
如果从www.testing.devi执行相同的ajax查询,我得到Auth :: check()返回null.虽然我得到正常的响应,所以跨域设置没有问题..这里是我的路由中的标题api.testing.dev
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');
Run Code Online (Sandbox Code Playgroud)
该网站在带有wamp的localhost中运行.
编辑:使用默认会话驱动程序'driver' => 'file',在初始登录后,在app/storage/sessions一个文件中.如果我从一个子域转到另一个子域,则不会生成其他文件.虽然当我预先形成一个CORS ajax时,每次生成一个新文件时......
小智 1
看到你的配置,也许你和我有同样的问题。我没有使用 Auth,而是null每次都使用会话和获取。我通过改变这个解决了这个问题:
header('Access-Control-Allow-Origin: *');
...
header('Access-Control-Allow-Credentials: true');
Run Code Online (Sandbox Code Playgroud)
对此:
header('Access-Control-Allow-Origin: http://localhost:9000');
...
header('Access-Control-Allow-Credentials: true');
Run Code Online (Sandbox Code Playgroud)
我发现的原因是,当您使用凭据时,出于安全目的,它需要指定来源,并且对于 AJAX 请求,它也需要指定凭据。我使用 Angular 并使用 这样做$httpProvider.defaults.withCredentials=true;,但我真的不知道 jQuery 的相应指令,但我希望你能找到它。
使用您最喜欢的调试器(对我来说是 Firebug)检查请求和响应的标头。它们应该有一个 cookie 属性(它包含带有“laravel”、“token”等的内容),第二次应该等于第一次响应标头。
| 归档时间: |
|
| 查看次数: |
2124 次 |
| 最近记录: |