CORS丢失会话中的Angular应用程序


Angular App in CORS Losing Session

我有两个域:

  • http://localhost:9000/MyAngularJS应用程序与Yeoman一起创建
  • http://localhost/使用CodeIgniter创建的我的PHP应用程序

我的Angular应用程序执行$http.post以在PHP应用程序中进行身份验证,并保存一个会话以将用户身份验证为已登录用户,但是,当我尝试恢复存储在CI会话中的用户信息时,它根本不存在。

我如何允许AngularJS应用程序访问会话而不丢失?

假设您的PHP应用程序被配置为支持CORS,那么Angular $httpProvider需要如下配置。。。

$httpProvider.defaults.useXDomain = true;

然后,为了允许设置响应cookie,withCredentials必须为true。。。

$http.post(url, {withCredentials: true, ...})

最后,您可能需要调整cookie域和路径,以便跨TLD的子域访问。例如,如果您的CORS服务器位于api.foo.com,则默认情况下,它可能会在api.foo.com上设置cookie,并且您在awesome-app.foo.com上的客户端应用程序将被拒绝访问这些cookie。当然,出于安全原因,您不希望您的客户端应用程序读取API的会话Cookie。

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