app.
子域上,后端(PHP)位于根目录和api.
子域上。我的登录是通过根目录完成的,该目录存储会话cookie。该Cookie存储在所有子域中,路径为“/”。直接在API上,我可以获取Cookie。但是,在使用来自前端的Ajax GET调用的相同URL时,Cookie为空。
但是,使用像Postman(Chrome应用)这样的应用程序对同一URL进行GET请求,我可以获取Cookie。因此,似乎这是特定于我的应用程序前端的问题。
以下是我的Angular应用程序的设置。我已在我的应用程序配置中设置了这些默认值:
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
我已经在Chrome和FF上测试过了,但无法理解为什么我的前端和后端之间无法使用我的cookies/sessions。
更新20/11/2013:
我还遇到了一个特定的问题,与我使用的Angular版本有关。因为我正在使用`$resource`而不是只是`$http`,所以那个版本的angular在使用`$resource`时没有将`withCredentials`设置附加到http请求中。更新到最新的angularjs版本已经解决了我的问题。由于`withCredentials`没有被设置,我的cookies没有随着xhr请求一起发送。很可笑的是,我没有检查cookie是否被发送。