我有两个域:
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。
希望这能有所帮助。祝你好运