Que*_*tin 89

Cookie是浏览器存储的一些数据,每次请求都会发送到服务器.

会话是存储在服务器上并与给定用户相关联的数据集合(通常通过包含id代码的cookie)

  • 连接关闭后,会话值也会重置.Cookie值通常会保存. (2认同)
  • @BadSkillz — 不。会话值通常在一段时间过去后没有来自与会话相关联的客户端的连接后重置。Cookie 值会一直保存到它们的到期时间(如果未设置,则浏览器将关闭)。立即过期覆盖可用于两者。 (2认同)

too*_*asr 51

Cookie用于标识会话.访问任何使用Cookie的网站,如果使用的是Firefox,请启动Chrome检查元素,然后选择网络或FireBug.

您可以看到有一个标头发送到服务器并且还收到了名为Cookie的标头.通常它包含一些个人信息(如ID),可以在服务器上用来识别会话.这些cookie保留在您的计算机上,您的浏览器负责将它们仅发送到使用它识别的域.

如果没有cookie,那么您将通过GET或POST在每个请求上发送唯一ID.Cookie就像静态ID一样留在您的计算机上一段时间.

是一组与该cookie信息相关的服务器上的信息.如果您正在使用PHP,则可以检查session.save_path位置并实际"查看会话".它们是服务器文件系统上的文件或数据库中的备份.

Cookie的屏幕截图


sea*_*and 12

会话是服务器上维护的一大块数据,用于维护HTTP请求之间的状态.HTTP基本上是一种无状态协议; 会话用于赋予其有状态.

Cookie是发送到客户端并从客户端返回的数据片段.Cookie通常用于促进会话,因为它告诉服务器哪个客户端处理哪个会话.还有其他方法可以做到这一点(查询字符串魔术等),但cookie可能是最常见的.


小智 11

会话和cookie之间的主要区别在于会话数据存储在服务器上,而cookie将数据存储在访问者的浏览器中.

会话比cookie更安全,因为它存储在服务器中.可以从浏览器关闭Cookie.

存储在cookie中的数据可以存储数月或数年,具体取决于cookie的生命周期.但是,当Web浏览器关闭时,会话中的数据将丢失.


Bas*_*asj 9

曲奇饼

  • 是浏览器中保存的少量数据(客户端)

  • 可以从 PHP 设置setcookie,然后将发送到客户端的浏览器(HTTP 响应头Set-cookie

  • 可以在 Javascript 中直接在客户端设置: document.cookie = 'foo=bar';

  • 如果没有设置过期日期,默认情况下,它会在浏览器关闭时过期。
    示例:访问http://example.com,打开控制台,执行document.cookie = 'foo=bar';. 关闭选项卡,重新打开同一个网站,打开控制台,执行document.cookie:你会看到foo=bar仍然存在。现在关闭浏览器并重新打开它,重新访问同一个网站,打开控制台;你会看到document.cookie是空的。

  • 除了“浏览器关闭时删除”之外,您还可以设置精确的到期日期。

  • 存储在浏览器中的 cookie 在同一网站的每个请求的标头中发送到服务器(请参阅 参考资料Cookie)。例如,您可以通过打开开发者工具 > 网络在 Chrome 中看到这一点,单击请求,请参阅Headers

    在此处输入图片说明

  • 可以在客户端读取 document.cookie

  • 可以在服务器端读取 $_COOKIE['foo']

  • 奖励:它也可以用 PHP 以外的其他语言设置/获取。带有“瓶子”微框架的 Python 示例(另请参见此处):

    from bottle import get, run, request, response
    @get('/')
    def index():
        if request.get_cookie("visited"):
            return "Welcome back! Nice to see you again"
        else:
            response.set_cookie("visited", "yes")
            return "Hello there! Nice to meet you"
    run(host='localhost', port=8080, debug=True, reloader=True)
    
    Run Code Online (Sandbox Code Playgroud)

会议

  • 是一些与浏览器会话相关的数据保存在服务器端

  • 每个服务器端语言可能以不同的方式实现它

  • 在 PHP 中,whensession_start();被调用:

    • 服务器生成一个随机 ID,例如 jo96fme9ko0f85cdglb3hl6ah6
    • 一个文件保存在服务器上,包含数据:例如 /var/lib/php5/sess_jo96fme9ko0f85cdglb3hl6ah6
    • 会话ID被发送到客户端的HTTP响应报头,采用传统的cookie机制上面详述Set-Cookie: PHPSESSID=jo96fme9ko0f85cdglb3hl6ah6; path=/

      在此处输入图片说明

      (它也可以通过 URL 而不是 cookie 发送,但不是默认行为)

    • 您可以使用以下命令在客户端查看会话 ID document.cookie

      在此处输入图片说明

  • PHPSESSIDCookie设置没有到期日,因此,当浏览器关闭时它就会过期。因此,当浏览器关闭/重新打开时,“会话”不再有效。

  • 可以在 PHP 中设置/读取 $_SESSION

  • 客户端看不到会话数据,而只看到 ID:在index.php以下位置执行此操作:

    <?php
    session_start();
    $_SESSION["abc"]="def";
    ?>
    
    Run Code Online (Sandbox Code Playgroud)

    在客户端看到的唯一内容是(如上所述)会话 ID:

    在此处输入图片说明

  • 因此,会话对于存储您不想被客户端看到或修改的数据很有用

  • 如果您想使用自己的数据库 + ID 并使用传统 Cookie 向客户端发送 ID/令牌,则可以完全避免使用会话

  • 完美解释 (2认同)
  • 我见过的关于 cookie 和 session 的最清楚的答案,特别是关于关闭浏览器后 session 是如何自动删除的。 (2认同)

Ela*_*van 5

Cookie作为文本文件格式存储在浏览器中.它存储有限数量的数据,最多4kb [4096bytes].单个Cookie不能容纳多个值但是我们可以有多个cookie.

Cookie易于访问,因此不太安全.setcookie()函数必须出现在标记之前.

会话存储在服务器端.会话没有这样的存储限制.会话可以容纳多个变量.因为它们不容易访问因此比cookie更安全.