【问题标题】:CORS - Server side cookie is not getting saved on chrome browserCORS - 服务器端 cookie 未保存在 chrome 浏览器上
【发布时间】:2016-09-13 10:52:20
【问题描述】:

有一个节点服务器在接受用户的正确凭据后,passport js 会在请求标头中按 set-cookie 的名称创建并发送会话 cookie。

但是当我从我的 chrome 浏览器执行 ajax 请求 接受请求时,它不会在客户端添加 cookie。因此,当从客户端生成新请求时,服务器不会对其进行身份验证并抛出 401。

我很困惑是浏览器问题还是我从 AJAX 请求中遗漏了什么

请帮忙。

【问题讨论】:

  • 你碰巧知道哪个域服务器正在创建 cookie 吗? cookie域和网站域冲突的可能原因之一。
  • 简单的 cors-needing 请求(来自第 3 方的请求)不允许使用 cookie。
  • 您能分享一下您用于执行 ajax 请求的代码,以及身份验证服务器和网站的域吗?正如@MaheshChavda 建议的那样,可能是 CORS 问题;某些浏览器在执行跨域 ajax 请求时拒绝处理 Set-Cookie 标头。您可以使用credentials 添加适当的选项,如此答案stackoverflow.com/questions/8863571/… 或(带角度)中建议的那样:stackoverflow.com/questions/19383311/…
  • 检查服务器是否设置正确也很有意义:stackoverflow.com/questions/37090621/…

标签: javascript ajax cookies cross-domain


【解决方案1】:

如果你使用'fetch',你需要添加一个key

{
        headers: req.headers,
        credentials: 'include'
}

【讨论】:

  • 我想知道谁投了反对票,因为这对fetch() 来说是绝对正确的。
【解决方案2】:

感谢您的回答。我正在尝试 withCredentials 的东西,但会话 cookie 没有在我的本地设置。

我发现的原因是允许的来源。我需要在后端设置允许的来源。

如果使用凭证属性传递,XHR by 是一个安全请求。因此,客户端浏览器仅在允许的来源与请求来源匹配时才保存 cookie。

所以简单的解决方法是将主机更改为与允许的来源匹配的内容。

在节点端我需要做origin: 'domain.com' 在前端,我需要将我的服务器(localhost)设置为指向 test.domain.com。和宾果游戏。成功了!

【讨论】:

    【解决方案3】:

    我在 Chrome 中使用 Angular 4 时遇到了这个问题(IE 工作正常)。

    从 localhost:4200 上的客户端到 localhost:24336 上的 WebApi 的请求。 拥有所有 CORS 设置,“Access-Control-Allow-Credentials” value="true" "Access-Control-Allow-Origin" value="http://localhost:4200" 等,并且正在通过 { withCredentials: true } 在每个请求中,例如 http.post(url, {}, { withCredentials: true }) 。

    对我来说,解决方法是按照https://angular.io/api/http/BaseRequestOptions 的步骤将默认 RequestOptions 设置为 {withCredentials: true } 并将以下内容添加到提供程序:在 app.module.ts 中

    ,{provide: RequestOptions, useClass: MyOptions}
    

    【讨论】:

      【解决方案4】:

      如果您使用 XHR 请求,则需要将 withCredentials 设置为 true。如果没有,应该可以解决问题,请提供代码

      【讨论】:

      • 你能用一些示例代码扩展你的答案吗?
      猜你喜欢
      • 2019-11-04
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 2018-05-19
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      相关资源
      最近更新 更多