当前位置:  开发笔记 > 编程语言 > 正文

服务器端cookie和客户端cookie之间有什么区别?

如何解决《服务器端cookie和客户端cookie之间有什么区别?》经验,为你挑选了3个好方法。

在服务器和客户端上创建cookie有什么区别?这些是服务器端cookie和客户端cookie吗?有没有办法创建只能在服务器或客户端上读取的cookie?



1> 小智..:

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 foo = 10和bar = 20存储在浏览器中.第二个将于9月30日到期.在每个后续请求中,浏览器都会将cookie发送回服务器.

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

会话:服务器端cookie

服务器端cookie称为"会话".在这种情况下,网站在浏览器上存储一个包含唯一会话标识符的cookie.状态信息(foo = 10和bar = 20以上)存储在服务器上,会话标识符用于将请求与存储在服务器上的数据相匹配.

用法示例

您可以使用会话和cookie来存储:身份验证数据,用户首选项,电子商务网站中的图表内容等...

优点和缺点

以下是解决方案的优缺点.这是我想到的第一个,肯定还有其他的.

Cookie优点:

可伸缩性:所有数据都存储在浏览器中,因此每个请求都可以通过负载均衡器到达不同的Web服务器,并且您拥有满足请求所需的所有信息;

可以通过浏览器上的javascript访问它们;

不在服务器上,他们将在服务器重启后继续存在;

RESTful:请求不依赖于服务器状态

Cookie缺点:

存储空间限制为80 KB(20个cookie,每个4 KB)

安全cookie不容易实现:看一下文章A安全cookie协议

会议优点:

通常更容易使用,在PHP中可能没有太大区别.

无限存储

会议缺点:

更难以扩展

在Web服务器重新启动时,您可以丢失所有会话,具体取决于实现

不是RESTful


很大程度上误导性的答案 - 会话不是cookie.https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP_session您可以拥有会话变量,具体取决于在服务器上实施会话管理的方式.您通常拥有一个或多个与会话管理相关的cookie,方法是保存会话标识符.REST和RESTful也与cookie或会话管理无关 - REST和RESTful实现可以有会话和cookie.
参见/sf/ask/17360801/我不是说会话通常不是用cookie实现的,但是会话管理还有其他选择,因此这是错误的谈论会话变量作为服务器端Cookie。我在2017年在上面的评论中说“ REST和RESTful实现可以具有会话和cookie”时,也指的是JWT。尽管一些纯粹主义者可能会争辩说这不是实现REST API的正确方法。

2> nikc.org..:

你可能意味着Http Only cookies和他们的对手部分之间的区别?

Http只能在客户端JavaScript(仅服务器端)访问(读取或写入)cookie.如果未设置Http Only标志,或者在(客户端)JavaScript中创建cookie,则可以在(客户端)JavaScript以及服务器端读取和写入cookie.



3> GolezTrol..:

所有cookie都是客户端服务器

没有区别.常规cookie可以设置为服务器端或客户端."经典"cookie将随每个请求一起发回.由服务器设置的cookie将在响应中发送到客户端.服务器仅在显式设置或更改cookie时发送cookie,而客户端在每个请求上发送cookie.

但基本上它是相同的cookie.

但是,行为可能会改变

Cookie基本上是name=value一对,但在值之后可以是一串分号分隔的属性,如果客户端(或服务器)如​​此实现,则会影响cookie的行为.这些属性可以是关于生命周期,上下文和各种安全设置.

仅限HTTP(不仅仅是服务器)

其中一个属性可以由服务器设置,以指示它是仅HTTP的cookie.这意味着cookie仍然来回发送,但它不能在JavaScript中使用.但请注意,cookie仍然存在!它只是浏览器中的内置保护,但如果有人会使用像IE5这样荒谬的旧浏览器,或者某些自定义客户端,他们实际上可以读取cookie!

所以似乎有'服务器cookie',但实际上没有.这些cookie仍然发送给客户端.在客户端上,无法阻止cookie被发送到服务器.

实现'唯一'的替代方案

如果要仅在服务器上存储值,或仅在客户端上存储值,则需要其他类型的存储,例如服务器上的文件或数据库,或客户端上的本地存储.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有