【问题标题】:Does an HTTP Session always require a Cookie?HTTP 会话是否总是需要 Cookie?
【发布时间】:2011-01-22 23:14:36
【问题描述】:

我猜是的,但我不确定。

经过身份验证的会话和匿名会话都将通过 cookie 引用存储的会话。

########### 编辑:澄清

似乎会话需要某种方式来引用存储的会话数据。
此引用可以存储在 cookie 中,也可以作为参数添加到 URL 中。

【问题讨论】:

    标签: django http session


    【解决方案1】:

    您可以将会话 ID 作为查询参数 (www.blah.com/index.php?SESSIONID=fADSF124323) 传递。但它必须在每一页上。 PHP has a option 透明地启用此功能。这是一个巨大的混乱。这就是首选 cookie 的原因。

    【讨论】:

    • 我从未见过像你的名字一样接近我的名字。
    • 哈哈,太棒了。这是在开玩笑吗?
    • 不,只是巧合,但很有趣。我之前的名字被误读为 Byron Whitlock。
    【解决方案2】:

    不一定,某些网站使用 URL 中的会话 ID 值来表示会话,并且该值会附加到用户访问的所有链接。

    我们必须在工作中以这种方式使用它,因为移动浏览器通常不接受 cookie,而这是记住会话的唯一方法。

    【讨论】:

      【解决方案3】:

      还有HTTP-Authentication,今天不再经常使用,因为浏览器必须在每次请求时将用户名和密码发送到未加密的服务器。 HTTP-Auth 只是将用户名和密码放在浏览器发送的标头中。

      【讨论】:

        【解决方案4】:

        您几乎可以通过浏览器插件、字体等唯一地识别人们。

        https://panopticlick.eff.org/

        【讨论】:

        • 虽然很有趣,但我不会说这是识别唯一用户的可靠方法,尤其是当您的网站有很多访问者时。
        • 这取决于它的可靠性。
        【解决方案5】:

        当您使用 SSL/TLS 时,至少理论上可以使用 SSL 会话 id 来引用服务器上的某些状态。

        【讨论】:

          【解决方案6】:

          我知道这太从字面上理解了,但指出 HTTP 是无状态的,因此没有会​​话似乎是合适的。为了维护状态,浏览器或服务器必须在请求之间持久化状态信息。传统上,服务器维护状态,按照惯例,这称为会话,但它与 HTTP 无关,因为它是一种解决方法。此外,会话通常具有非常具体的含义 - 即它是对站点的个人访问,将在不再使用时过期(一段时间不活动)。同一用户使用不同的计算机或浏览器也会有所不同。

          为了实现服务器会话,服务器一般会在内存或数据库中留出一些信息来跟踪状态,并使用一条标识信息将http请求与该状态相关联。这通常是一个令牌。浏览器需要包含标识每个 http 请求的会话的信息。只要服务器和浏览器同意,这如何发生并不重要。它通常是一个 cookie 或作为后备的 url 参数,但只要您正确设置代码,它也可以是 url 本身的一部分、POST 正文的一部分,甚至是非标准的 http 标头。

          越来越流行的替代方法是在浏览器中维护状态并使用纯 ajax 调用服务器。在这种情况下,服务器不必维护任何会话概念,而只会以完全与用户无关的方式返回请求的数据。如果数据是私有的,可能仍然需要一些身份验证,但会话令牌不是,并且服务器上不保留任何状态。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-05
            • 2013-03-08
            • 2011-02-05
            • 2023-04-08
            • 2018-02-28
            • 1970-01-01
            相关资源
            最近更新 更多