是什么在服务器和客户端上创建的cookie的区别?难道这些所谓的服务器端的cookie和客户端的cookie?有没有一种方法来创建一个只能在服务器或客户端上读取Cookie吗?
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。状态的信息(富= 10和栏上方= 20)被存储在服务器上,所述会话标识符被用来匹配存储在服务器上的数据的请求。
您可以使用会话和Cookie存储:验证数据,用户偏好,图表的电子商务网站上的内容,等等。
以下解决方案的利弊。这些都是在我脑海的第一个,也有一定他人。
库基为:
Cookie的缺点:
会议优点:
会议缺点:
你大概的意思Http Only cookies和他们的柜台部分之间的区别?
仅HTTP的cookies不能在客户端的JavaScript,只有服务器端进行访问(读取或写入)。如果HTTP只有标志未设置,或在(客户端)的JavaScript创建的cookie,该cookie可以读取和写入到(客户端)的JavaScript以及服务器端。
所有Cookie是客户机和服务器
没有区别。有规律的cookie可以被设置服务器端或客户端。 “经典” cookie将被发送回与每个请求。由所述服务器所设置的Cookie,将在响应被发送到客户端。该服务器只发送当它被明确设置或更改,而客户端发送的每个请求的cookie中的cookie。
但它本质上是相同的cookie。
但是,行为可以改变
Cookie是基本上是name=value
一对,但after the value可以是一堆影响cookie的行为,如果就这样由客户端(或服务器)中实现分号分隔的属性。这些属性可以是约一辈子,背景和不同的安全设置。
仅HTTP(不是服务器专用)
其中一个属性都可以通过服务器进行设置,以表明它是一个只HTTP cookie的。这意味着,该cookie仍然来回发送,但在它的JavaScript将无法使用。请注意,虽然,该cookie仍然存在!这只是一个内置在浏览器保护,但如果有人会用一个可笑的老浏览器,如IE5,或一些自定义的客户,他们实际上可以读取cookie!
因此,它好像有“服务器饼干”,但实际上有没有。这些cookie仍然发送到客户端。在客户端没有办法阻止一个cookie被发送到服务器。
替代实现“只岬”
如果你想只存储在服务器上的值,或仅在客户端上,然后你需要一些其他类型的存储,如在客户端服务器上的文件或数据库,或本地存储。
本地存储实际上是语法简单比cookie的使用。饼干与本地存储的一个很好的简单的总结,可以发现:
一点:你可以使用JavaScript中创建cookie存储GUI相关的东西,你只需要在客户端。但cookie被发送到服务器进行的每个请求,就变成从而使请求的HTTP请求报头的部分包含更多的数据,并且因此速度较慢发送。
如果你的页面有50个资源,如图像和CSS-文件和脚本然后(通常情况下)发送与每个请求的cookie。更多关于这方面Does every web request send the browser cookies?
本地存储没有这些数据传输相关的缺点,它发送任何数据。这太棒了。