【问题标题】:HttpOnly cookie setting in local deployment but not remote deployment本地部署而不是远程部署中的 HttpOnly cookie 设置
【发布时间】:2021-08-16 18:51:21
【问题描述】:

我有一个本地服务器,它在本地客户端上成功设置了 HtmlOnly cookie,但远程服务器上的相同代码没有设置 cookie。

本地服务器是运行在http://localhost:8000 上的Chalice 服务器。响应头是:

{
    'Content-Type': 'application/json', 
    'Access-Control-Allow-Origin': 'http://localhost:5000', 
    'Access-Control-Allow-Credentials': 'true', 
    'Set-Cookie': 'refresh-token=my_token_value; <Max-Age>=605000; Path=/; HttpOnly'
}

本地客户端正在http://localhost:5000' 上运行。它通过fetch调用:

fetch("http://localhost:8000/login", {
    method: 'POST',
    headers: {'Content-Type': 'text/plain'},
    body: JSON.stringify(payload),
    credentials: 'include',
    mode: 'cors'
})

远程服务器正在https://my-server-domain.com/api 之类的东西上运行。响应头是:

{
    'Content-Type': 'application/json', 
    'Access-Control-Allow-Origin': 'https://my-client-domain.com', 
    'Access-Control-Allow-Credentials': 'true', 
    'Set-Cookie': 'refresh-token=my_token_value; <Max-Age>=605000; Path=/; HttpOnly'
}

远程客户端正在https://my-client-domain.com 之类的东西上运行。它的调用方式与本地客户端相同:

fetch("https://my-server-domain.com/api/login", {
    method: 'POST',
    headers: {'Content-Type': 'text/plain'},
    body: JSON.stringify(payload),
    credentials: 'include',
    mode: 'cors'
})

API 调用远程服务器work——它们返回预期的响应——但是 cookie 没有设置到浏览器。关于为什么会这样的任何建议?

【问题讨论】:

    标签: javascript httponly chalice


    【解决方案1】:

    尝试直接在客户端简单设置cookie,然后发送到服务器

    【讨论】:

    • 当我使用 document.cookie = 'simple_key=simple_value; path=/' 手动设置 cookie 时,cookie 会出现在我的本地服务器中,但不会出现在我的远程服务器上。我还尝试添加'; secure''; domain=my-server-domain.com''; domain=https://my-server-domain.com' 的组合。我的远程服务器上没有 cookie。
    • 好像是服务器端的配置,尝试处理基础功能检查。
    【解决方案2】:

    我的本​​地部署和远程部署之间的最大区别在于运行https。最终的工作是将SameSite=None; Secure 设置为cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 2012-10-28
      • 2011-03-04
      • 2011-01-22
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多