【问题标题】:CORS requests with session/cookie带有会话/cookie 的 CORS 请求
【发布时间】:2016-04-30 07:48:44
【问题描述】:

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

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

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

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

是否出于安全原因故意禁用此功能?

【问题讨论】:

    标签: php session cookies cors


    【解决方案1】:

    您必须将 withCredentials 设置为 true 以使跨域 XHR 请求包含 cookie。

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

    【讨论】:

    • 非常感谢。这行得通。我接受这个答案而不是 @CBroe 的,因为这个答案还提到了 Access-Control-Allow-Credentials 标头。附带说明,Access-Control-Allow-Origin 不能是通配符 (*)。
    【解决方案2】:

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

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

    要做到这一点,您需要设置 withCredentials 标志。

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2020-10-23
      相关资源
      最近更新 更多