【问题标题】:Google Chrome Cookies - HTTP & HTTPSGoogle Chrome Cookie - HTTP 和 HTTPS
【发布时间】:2011-01-18 09:25:30
【问题描述】:

我有一个网站,它使用 www.example.com 作为标准页面,使用 secure.example.com 作为 HTTPS。 我正在尝试在用户登录时设置一个 cookie,该 cookie 在网站的 HTTP 和 HTTPS 版本上均有效。

我通过将路径设置为“/”并将域设置为“.example.com”来做到这一点。这在 Firefox 和 Internet Explorer 中运行良好,但在 Chrome 中,cookie 仅适用于设置它的网站版本(http://www.example.comhttps://secure.example.com

这是一个错误还是我做错了什么?如果是错误,是否有解决方法?

cookie 正在由 PHP 在标头中设置。

setcookie("login",base64_encode($email."::".md5($password)),2840184012,"/",".example.com");

【问题讨论】:

    标签: php cookies google-chrome


    【解决方案1】:

    您不能同时为 HTTP 和 HTTPS 设置 cookie。您需要设置两个单独的 cookie,一个用于 HTTP,一个用于 HTTPS:

    setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com");
    setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com", true);
    

    这仅在您在 https://secure.example.com 中设置 cookie 时才有效,因为您只能通过 HTTPS 设置安全 cookie。

    哦,顺便说一句:不要将身份验证信息存储在 cookie 中!请改用一次有效的身份验证令牌。

    【讨论】:

    • 按照您的建议进行了尝试,但这仍然无法在 Chrome 中使用。我在设置 cookie 后立即使用 header("Location: example.com") 如果这有什么不同?
    • @Tim:你是通过 HTTPS 设置这些 cookie 的吗?
    • 是的,我在 HTTPS 上测试过。该 cookie 在我的所有浏览器中都适用于 HTTP 和 HTTPS 网站,除了 Chrome,它只适用于 HTTPS 网站。
    • @Tim:所以通过HTTPS请求时没有设置HTTP cookie?
    • Chrome 在 HTTPS 页面上将 cookie 发送到服务器,但不会将其发送到 HTTP 页面。这是服务器发送的标头: Set-Cookie login=blahblahblah;过期=周四,2060 年 1 月 1 日 12:00:12 GMT;路径=/;域=.example.com 登录=blahblahblah;过期=周四,2060 年 1 月 1 日 12:00:12 GMT;路径=/;域=.example.com;安全
    猜你喜欢
    • 2018-10-05
    • 2011-01-20
    • 2012-05-01
    • 2013-05-26
    • 2014-12-15
    • 2018-05-22
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多