gpt4 book ai didi

authentication - 通过 Set-Cookie 注销失败

转载 作者:行者123 更新时间:2023-12-04 04:33:30 24 4
gpt4 key购买 nike

我们不久前将我们的网站移到了一个新的主机上,并且偶尔会遇到人们无法退出的问题。不确定这是否与托管环境或代码更改有关。

这是相关位的 Wireshark 日志——所有这些都发生在同一个 TCP 流中。

  • 来自浏览器的注销请求(注意身份验证 cookie):
    GET /cirrus/logout HTTP/1.1

    Host: subdomain.domain.com

    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

    Accept-Language: en-US,en;q=0.5

    Accept-Encoding: gzip, deflate

    Referer: http://subdomain.domain.com/cirrus/CA/Admin/AccountSwitch

    Cookie: USER.AUTH=AOvDEjH3w6xIxUC0sYNOAQR5BZ7pPmEF0RMxqohERN87Ti03Eqxd7rQC/BveqmaszmFg8QoSonP+Z+mtQQivKpvloFsQYretYKR8ENubj+moUBF479K5e4albKxS9mBEWT5Xy/XCnEyCPqLASGLY09ywkmIilNU1Ox4J3fCtYXHelE/hyzuKe9y3ui5AKEbbGs3sN9q1zYjVjHKKiNIGaHvjJ2zn7ZUs042B82Jc9RHzt0JW8dnnrl3mAkN1lJQogtlG+ynQSCyQD8YzgO8IpOnSXLJLaCMGMQcvSyX4YKJU/9sxgA5r5cZVCkHLsReS3eIJtXoxktMO6nxVZJY6MX1YwuJOgLRQvwBy9FFnQ6ye

    X-LogDigger-CliVer: client-firefox 2.1.5

    X-LogDigger: logme=0&reqid=fda96ee5-2db4-f543-81b5-64bdb022d358&

    Connection: keep-alive
  • 服务器响应。它清除cookie值并重定向
    HTTP/1.1 302 Found

    Server: nginx

    Date: Fri, 22 Nov 2013 14:40:22 GMT

    Content-Type: text/html; charset=utf-8

    Content-Length: 124

    Connection: keep-alive

    Cache-Control: private, no-cache="Set-Cookie"

    Location: /cirrus

    Set-Cookie: USER.AUTH=; expires=Fri, 22-Jul-2005 14:40:17 GMT; path=/cirrus

    X-Powered-By: ASP.NET

    X-UA-Compatible: chrome=IE8



    <html><head><title>Object moved</title></head><body>

    <h2>Object moved to <a href="/cirrus">here</a>.</h2>

    </body></html>
  • 浏览器遵循重定向,但使用旧的 cookie 值:
    GET /cirrus HTTP/1.1

    Host: subdomain.domain.com

    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:26.0) Gecko/20100101 Firefox/26.0

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

    Accept-Language: en-US,en;q=0.5

    Accept-Encoding: gzip, deflate

    Referer: http://subdomain.domain.com/cirrus/CA/Admin/AccountSwitch

    Cookie: USER.AUTH=AOvDEjH3w6xIxUC0sYNOAQR5BZ7pPmEF0RMxqohERN87Ti03Eqxd7rQC/BveqmaszmFg8QoSonP+Z+mtQQivKpvloFsQYretYKR8ENubj+moUBF479K5e4albKxS9mBEWT5Xy/XCnEyCPqLASGLY09ywkmIilNU1Ox4J3fCtYXHelE/hyzuKe9y3ui5AKEbbGs3sN9q1zYjVjHKKiNIGaHvjJ2zn7ZUs042B82Jc9RHzt0JW8dnnrl3mAkN1lJQogtlG+ynQSCyQD8YzgO8IpOnSXLJLaCMGMQcvSyX4YKJU/9sxgA5r5cZVCkHLsReS3eIJtXoxktMO6nxVZJY6MX1YwuJOgLRQvwBy9FFnQ6ye

    X-LogDigger-CliVer: client-firefox 2.1.5

    X-LogDigger: logme=0&reqid=0052e1e1-2306-d64d-a308-20f9fce4702e&

    Connection: keep-alive

  • Set-Cookie header 中是否有明显缺失的内容可能会阻止浏览器删除 cookie?

    要更改现有 cookie 的值,以下 cookie 参数必须匹配:
  • 姓名
  • 路径

  • 名称和路径是明确设置的,域不是。这可能是问题吗?

    编辑:正如有人问为什么过期日期是在过去设置的,更多的背景知识。
    这是对 AppHarbor Security 插件的轻微修改: https://github.com/appharbor/AppHarbor.Web.Security
    修改是包含cookie的路径。请在此处找到修改后的注销方法:
    public void SignOut(string path)
    {
    _context.Response.Cookies.Remove(_configuration.CookieName);
    _context.Response.Cookies.Add(new HttpCookie(_configuration.CookieName, "")
    {
    Expires = DateTime.UtcNow.AddMonths(-100),
    Path = path
    });
    }

    过去的过期日期是由 AppHarbor 插件完成的,是常见的做法。见 http://msdn.microsoft.com/en-us/library/ms178195(v=vs.100).aspx

    最佳答案

    猜测我会说历史到期日期导致整个 Set-Cookie 行被忽略(为什么设置一个 8 年前过期的 cookie?)。
    expires=Fri, 22-Jul-2005

    关于authentication - 通过 Set-Cookie 注销失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148102/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com