带有会话/cookie 的 CORS 请求


CORS requests with session/cookie

我的应用程序有一个PHP服务器和一个客户端(一个JS单页应用程序)。它们是单独的项目,部署在不同的域中。客户端使用服务器公开的 RESTful API。

此应用程序将与处理身份验证的第三方集成,因此用户无法直接登录。我们的服务器只收到一个 SSO 令牌(经过适当签名,以便我们验证其完整性)。

我们还在传输层对所有请求强制实施安全性。

我想做的是,验证 SSO 令牌后,启动我自己的会话,然后将用户重定向到客户端。我以为一旦创建了会话,浏览器就会在异步 API 调用中自动发送正确的 Cookie 标头,但事实似乎并非如此。

这是出于安全原因故意禁用的吗?

您必须将withCredentials设置为true,以便跨源 XHR 请求包含 Cookie。

CORS 响应还必须说Access-Control-Allow-Credentials: true(这就是widthCredentials默认为 false 的原因)。

我认为一旦创建了会话,浏览器就会在异步 API 调用中自动发送正确的 Cookie 标头

不适用于对启用 CORS 的资源的跨域请求(如果我正确理解您描述的设置,这里似乎就是这种情况。

为此,您需要设置 withCredentials 标志。