我的应用程序有一个PHP服务器和一个客户端(一个JS单页面应用程序)。它们是单独的项目,并部署在不同的域中。客户端使用服务器公开的RESTful API。
此应用程序将与处理身份验证的第三方集成,因此用户无法直接登录。我们的服务器只接收一个SSO令牌(经过适当签名,以便我们验证其完整性)。
我们还在传输层为所有请求强制执行安全性。
我想要做的是,一旦验证了SSO令牌,就启动我自己的会话,然后将用户重定向到客户端。我认为一旦创建了会话,浏览器就会在异步API调用中自动发送正确的Cookie标头,但似乎并非如此。
出于安全原因,这是否被故意禁用?
答案 0 :(得分:5)
您必须将withCredentials
设置为true
,以便跨域XHR请求包含Cookie。
CORS响应还必须说Access-Control-Allow-Credentials: true
(这就是widthCredentials
默认为false
的原因。)
答案 1 :(得分:2)
我认为一旦创建了会话,浏览器就会自动在异步API调用中发送正确的Cookie标头
不适用于启用CORS的资源的跨域请求(如果我正确理解您所描述的设置,这似乎就是这种情况。)
要实现这一点,您需要设置withCredentials
标志。