【问题标题】:Angular App in CORS Losing SessionCORS 失败会话中的 Angular 应用程序
【发布时间】:2014-08-28 15:58:04
【问题描述】:
我有两个域:
-
http://localhost:9000 / 我用 Yeoman 创建的 AngularJS 应用程序
-
http://localhost/ 我用 CodeIgniter 创建的 PHP 应用
我的 Angular 应用程序执行 $http.post 以在 PHP 应用程序中进行身份验证并保存会话以将用户识别为已登录,但是,当我尝试恢复存储在 CI 会话中的用户信息时,它就不存在了。
我怎样才能让 AngularJS 应用程序访问会话而不丢失?
【问题讨论】:
标签:
php
angularjs
codeigniter
session
【解决方案1】:
假设你的 PHP 应用配置为支持 CORS,那么 Angular $httpProvider 需要配置如下...
$httpProvider.defaults.useXDomain = true;
然后要允许设置响应 cookie,withCredentials 必须为真...
$http.post(url, {withCredentials: true, ...})
最后,您可能需要调整 cookie 域和路径,以便跨 TLD 的子域访问。例如,如果您的 CORS 服务器位于 api.foo.com,那么它可能会默认在 api.foo.com 上设置 cookie,并且您在 awesome-app.foo.com 上的客户端应用程序将被拒绝访问这些 cookie。当然,出于安全原因,您不希望您的客户端应用读取 API 的会话 cookie。
希望这会有所帮助。祝你好运。