素材牛VIP会员
面试经典问题:Cookie禁用了,Session还能用吗?
 流***雨  分类:PHP代码  人气:1560  回帖:14  发布于6年前 收藏

面试的时候经常被问到Cookie禁用了,Session还能用吗?不同的公司给出的答案也有点不同,到底Cookie禁用了,Session还能用吗?很是郁闷?......

很感谢每一位回答者,也希望能有更好的答案。大家一起加油!

 标签:php

讨论这个帖子(14)垃圾回帖将一律封号处理……

Lv5 码农
Co***ht 软件测试工程师 6年前#1

這不一定是一個題目, 你可以先問清楚他要的是php session_* 還是一般意義上的session

Lv6 码匠
Fo***ou 职业无 6年前#2

宏观上来说Session是Cookie的超集,不过具体实践中Session是服务器边的,而Cookie是客户端边的。

http://stackoverflow.com/ques...

Lv5 码农
Co***ht 软件测试工程师 6年前#3

这是可以的,URL附加session_id是最常用的方式,当然你也可以利用客户端的其它存储机制,例如HTML5的local_storage, session_storage等等。

Lv3 码奴
上***水 职业无 6年前#4

session与cookie没有什么关系,只不过使用cookie只是最常用的一种会话机制罢了

Lv5 码农
38***38 职业无 6年前#5

Cookie是Session的一种实现机制,Session还有别的实现机制。同样推荐上面@eote发的链接,简短明了

Lv7 码师
雪***狐 职业无 6年前#6

cookie禁用了session是 可以用 的。
拿php来说,在php里使用session会在cookie里添加 PHPSESSIONID用来记录用户的session的id。

那么既然cookie禁用了,必然PHPSESSIONID就写不进去了。
但是 实现session的方式 并不是只有写cookie这一种啊。

其他方式:

  1. URL重写方式
    比如url是 http://xxx.com/?sessionid=xxxxxx 这种的,每次get参数都带上这个id就可以达到相同效果。

  2. hidden input
    这种更好理解 就是在form里面加入sessionid。

<input type="hidden" name="sessionid" value="xxxxxxxx" />

Lv1 新人
冷***知 职业无 6年前#7

这两个有啥子关系?一个是本地cookie 一个是服务器里的cookie(session差不多就这个意思)

Lv3 码奴
xi***xu 职业无 6年前#8

http的无状态的特性,使得服务器无法知道当前请求者的身份。所以服务器需要给客户端发一个门卡,每个请求过来,刷一下门卡,服务器就知道你是谁了。cookie只是门卡的一种,由于它实现起来比较简单,兼容性也很好,所以广泛应用。其实用url来传递SessionId,也是一个不错的方案。比如 example.com?session_id=xxxxxxx,在服务器上实现一个读取并验证session_id的方法就可以。当然,很多程序员感觉这样暴露Sessionid会不安全。其实,用cookie一样是暴露的,连cookie都拿不到的人,是不可能对你的网站构成威胁的。sessionId的安全性,取决后端的加密算法和过期策略等等。

Lv4 码徒
朱***叶 UI设计师 6年前#9

通常情况下是不能的,由于sessionid存在了cookie中,但是可能模拟存储

Lv6 码匠
你***饭 学生 6年前#10

深入浅出Nodejs的第184页对这两个概念做了很详细的解释。你可以去参考一下。

上一页12下一页
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取