什么是服务器端的cookie和客户端的cookie有什么区别?

问题描述 投票:98回答:4

是什么在服务器和客户端上创建的cookie的区别?难道这些所谓的服务器端的cookie和客户端的cookie?有没有一种方法来创建一个只能在服务器或客户端上读取Cookie吗?

http cookies session-cookies
4个回答
128
投票

HTTP COOKIES

Cookie是网站存储在浏览器的状态信息的键/值对。假设你有一个网站(example.com),当浏览器请求一个网页的网站发送的cookie存储在浏览器上的信息。

浏览器请求示例:

GET /index.html HTTP/1.1
Host: www.example.com

示例结果从服务器:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: foo=10
Set-Cookie: bar=20; Expires=Fri, 30 Sep 2011 11:48:00 GMT
... rest  of the response

这里两个cookie富= 10和巴= 20被存储在浏览器上。第二个将在9月30日到期。在后续每次请求的浏览器将饼干发送回服务器。

GET /spec.html HTTP/1.1
Host: www.example.com
Cookie: foo=10; bar=20
Accept: */*

会话:服务器端的cookie

服务器端的cookie被称为“会话”。在这种情况下,网站上存储包含唯一的会话标识符的浏览器一个Cookie。状态的信息(富= 10和栏上方= 20)被存储在服务器上,所述会话标识符被用来匹配存储在服务器上的数据的请求。

用法示例

您可以使用会话和Cookie存储:验证数据,用户偏好,图表的电子商务网站上的内容,等等。

优点和缺点

以下解决方案的利弊。这些都是在我脑海的第一个,也有一定他人。

库基为:

  • 可扩展性:所有的数据都存储在浏览器,这样每个请求可以去通过负载均衡到不同的网络服务器和你的话需要满足请求所需的所有信息;
  • 它们可以通过在浏览器上的javascript访问;
  • 不是,他们会生存服务器重新启动服务器;
  • REST风格:请求不依赖于服务器状态

Cookie的缺点:

会议优点:

  • 通常更易于使用,在PHP中有可能没有太大的差别。
  • 无限存储

会议缺点:

  • 更难以形成规模
  • 在Web服务器重新启动,你可以失去所有会话与否取决于实现
  • REST风格的不

52
投票

你大概的意思Http Only cookies和他们的柜台部分之间的区别?

仅HTTP的cookies不能在客户端的JavaScript,只有服务器端进行访问(读取或写入)。如果HTTP只有标志未设置,或在(客户端)的JavaScript创建的cookie,该cookie可以读取和写入到(客户端)的JavaScript以及服务器端。


29
投票

所有Cookie是客户机和服务器

没有区别。有规律的cookie可以被设置服务器端或客户端。 “经典” cookie将被发送回与每个请求。由所述服务器所设置的Cookie,将在响应被发送到客户端。该服务器只发送当它被明确设置或更改,而客户端发送的每个请求的cookie中的cookie。

但它本质上是相同的cookie。

但是,行为可以改变

Cookie是基本上是name=value一对,但after the value可以是一堆影响cookie的行为,如果就这样由客户端(或服务器)中实现分号分隔的属性。这些属性可以是约一辈子,背景和不同的安全设置。

仅HTTP(不是服务器专用)

其中一个属性都可以通过服务器进行设置,以表明它是一个只HTTP cookie的。这意味着,该cookie仍然来回发送,但在它的JavaScript将无法使用。请注意,虽然,该cookie仍然存在!这只是一个内置在浏览器保护,但如果有人会用一个可笑的老浏览器,如IE5,或一些自定义的客户,他们实际上可以读取cookie!

因此,它好像有“服务器饼干”,但实际上有没有。这些cookie仍然发送到客户端。在客户端没有办法阻止一个cookie被发送到服务器。

替代实现“只岬”

如果你想只存储在服务器上的值,或仅在客户端上,然后你需要一些其他类型的存储,如在客户端服务器上的文件或数据库,或本地存储。


3
投票
  1. 是的,你可以创建一个只能在服务器端进行读取cookies。这些被称为“HTTP只有” -cookies,如已经在其他的答案解释
  2. 没有,没有办法(我知道的),以创建“曲奇”,只能在客户端读取。 Cookies是用来促进客户端服务器通信。
  3. 但是,如果你想要像“客户只有饼干”有一个简单的答案:使用“本地存储”。

本地存储实际上是语法简单比cookie的使用。饼干与本地存储的一个很好的简单的总结,可以发现:

https://courses.cs.washington.edu/courses/cse154/12au/lectures/slides/lecture21-client-storage.shtml#slide8

一点:你可以使用JavaScript中创建cookie存储GUI相关的东西,你只需要在客户端。但cookie被发送到服务器进行的每个请求,就变成从而使请求的HTTP请求报头的部分包含更多的数据,并且因此速度较慢发送。

如果你的页面有50个资源,如图像和CSS-文件和脚本然后(通常情况下)发送与每个请求的cookie。更多关于这方面Does every web request send the browser cookies?

本地存储没有这些数据传输相关的缺点,它发送任何数据。这太棒了。

© www.soinside.com 2019 - 2024. All rights reserved.