【问题标题】:HTTP cookie won't saveHTTP cookie 不会保存
【发布时间】:2018-11-07 14:05:24
【问题描述】:

假设我从https://test.mycompany.com/app01/index.html 托管我的网站。 Index.html 是我的登录页面。 https://test.mycompany.com:10000 是我的后端。 Grapevine 为后端提供动力。我将我的 cookie 设置如下:

Dim token As IdentityModel.Tokens.Jwt.JwtSecurityToken = Nothing
Dim j As String = JWT.Serialize(FetchSetting("JWTKey"), String.Empty, String.Empty,
                                                                           ClaimsIdn, token, FetchSetting("GlobalTimeout"))
Dim AuthCookie As New Net.Cookie("Authorization", j) With {
                                                      .Expires = token.ValidTo,
                                                      .Path = "/",
                                                      .Domain = "test.mycompany.com"
                                                  }

Context.Response.Cookies.Add(AuthCookie)

登录时,我通过 Chrome 控制台进行监控。登录返回 200。在 Network >(登录 POST 请求)下,我看到了一个 Cookies 选项卡。我还可以在 Headers 选项卡下(在 Response Headers 下)看到一个 Set-Cookie 标题。在 Applications > Cookies 下,它是空的。如果我将该字符串粘贴到控制台并将其设置为 document.cookie,它会正确设置(并且可以从 Applications > Cookies 中看到它)。

【问题讨论】:

  • 在 Grapevine 中设置 cookie 工作正常。当我这样做时:context.Response.Cookies.Add(new Cookie("test", "working"));,cookie 会为我显示在 Google Chrome 控制台中。 cookie的生成方式可能有问题?
  • 为了简单起见,我只创建了一个新的 cookie 对其进行了测试,例如 New Net.Cookie("Name", "Value")。结果相同。我想知道CORS是否与它有关。如果有办法调试并查看 CORS 在做什么,也许会默默地拒绝它(由于域/路径/端口)。

标签: vb.net http cookies grapevine


【解决方案1】:

这是 CORS 的一个问题:

如果协议、端口(如果指定)和主机相同,则两个 URL 具有相同的来源。您可能会看到这被称为“方案/主机/端口元组”,或者只是“元组”。 (“元组”是一组项目,它们共同构成一个整体——双/三/四/五/等的通用形式。) https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

截至 4.1.1,CORS 功能仍在 Grapevine 中实现,同时可以在此处找到有关解决方法的讨论:

https://github.com/sukona/Grapevine/issues/86

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多