CORS丢失会话中的角度应用

时间:2014-08-28 15:58:05

标签: php angularjs codeigniter session

我有两个域名:

  • http://localhost:9000 /我用Yeoman创建的AngularJS App
  • http://localhost /我使用CodeIgniter创建的PHP应用

我的Angular应用程序在PHP应用程序中进行$http.post验证并保存会话以使用户在记录时出现,但是,当我尝试恢复存储在CI会话中的用户信息时,只是不要存在。

如何让AngularJS应用程序访问会话并且不会丢失?

1 个答案:

答案 0 :(得分:4)

假设您的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。

希望这会有所帮助。祝你好运。