cookie与服务器、浏览器是什么关系?

JavaScript高级程序设计 629页 看不懂
1、cookie到底是存在浏览器还是服务器?
2、获取cookie时是从浏览器还是服务器获取cookie?
3、获取到cookie数据时 还要发送回服务器?

阅读 11.2k
7 个回答

想象一下你去某个涉密工厂参观,每个门都需要刷卡才能进。

你进大门之前,保安会把你的身份信息登记到他们的门禁系统里(服务器),比如姓名ABC,记到他们的访客状态(SESSION)。之后给你发一张 参观卡(cookie)

你走到这个公司的每个厂房,都要刷卡才能开门。你一刷卡,门禁上就提示:欢迎参观,ABC

当你参观完成,离开工厂前,保安说,这个门禁卡送给你留作纪念啦,但是明天这卡就刷不进来了(cookie还在你手里),之后转身在他们系统上记录访客状态ABC:参观结束(SESSION 过期)。

现在再回答你的问题:
1、cookie到底是存在浏览器还是服务器?
答:你的浏览器上,对应服务器上存的叫SESSION。浏览器就相当于故事中的你,门禁卡就相当于cookie,工厂相当于服务器网站,SESSION相当于工厂的访客记录

2、获取cookie时是从浏览器还是服务器获取cookie?
答:cookie是在必要时(比如你要访问工厂,而工厂也要确认你的身份和权限),由服务器发送给浏览器的。

3、获取到cookie数据时 还要发送回服务器?
答:向这个服务器每次发起请求,都会带上cookie,相当于进入每个厂房之前都会刷卡,每次都会确认你的身份。

cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中。

1.seseion是存在于服务器端的,cookie是存在于浏览器端,最大容量不超过4kB
2.存储在浏览器当然要在浏览器获取cookie
3.获取到cookie要发送回服务器,这个应该根据具体业务逻辑确定吧

我的看法:
1) cookie到底是存在浏览器还是服务器?

浏览器,并且各个浏览器之间的不同

2) 获取cookie时是从浏览器还是服务器获取cookie?

还是浏览器

3) 获取到cookie数据时 还要发送回服务器?
不一定,既可以在本地验证,也可以将获取的 cookie 通过
HTTP请求的形式发送给服务器:

clipboard.png

--------------update--------------
求解惑,为什么都说cookie是服务器生成的?
静态文件也可以保存cookie啊?(测试了一下,似乎无法生效)
例如chrome(startup with --enable-file-cookies):

document.cookie += ";test: test";
console.log(document.cookie);

cookie是存放在本地计算机的一段小文本

cookie存放在浏览器中.

你可以在chrome的开发工具中选择'application'面板, 再在左侧展开cookies, 就可以看到这个 域名下的所有cookie
clipboard.png

cookie生成于服务器, 保存于浏览器.

cookie用'获取'这个词时, 指的是程序的操作, 比如客户端脚本获取本地cookie.(这个cookie是服务端生成的, 比如php中就可以使用setcookie方法为请求响应添加cookie, 这样你的浏览器拿到这个响应时就会在本地保存这个cookie).

而正常情况下的cookie, 是浏览器每次向服务器发送请求时会自动带上的一小段儿'字符'. 用户标识客户端的身份. 接3

你可以用一段儿js代码获取你浏览器中的cookie.比如document.

cookie是自动发送的, 每次你向同域名服务器发送请求时都会自动带上. 同2.

cookie就是齐天大圣(server)在五指山留下的一泡X,X里面的DNA(session_id会话标示)证明了这是谁X的;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题