set-cookie 和 cookie 的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了set-cookie 和 cookie 的区别相关的知识,希望对你有一定的参考价值。
一、形式不同
1、set-cookie是一个函数,由服务器发送一个HTTP-cookie到浏览器。
2、cookie是服务器发送到浏览器的变量。
二、存在形式
1、Cookie:独立于语言存在,也就是说,不论是php还是JSP(亦或是Java、.Net等其他语言)设置的Cookie,其本质都是一样滴,客户端脚本javascript都能读取到。
2、set-cookie:PHP函数setcookie()和setrawcookie()均可设置Cookie,它们都有一个boolean型的返回值,如果是false,代表设置失败;如果是true,代表设置成功。但这个返回值仅供参考,并不能保证100%客户端能够成功。
三、作用不同
1、Cookie是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的Cookie就好像你的一张身份证,你电脑上的Cookie和其他电脑上的Cookie是不一样的
2、set-cookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。
扩展资料:
网络请求中的cookie与set-Cookie的交互模式和作用:
1、当很多人访问统一网络服务器,服务器如何区分不同的用户
sessionid,sessionid保证了浏览器和服务器唯一性的通信凭证号码,session保存在服务器上,sessionid保存在浏览器等客户端,服务器根据浏览器发送来的sessionid作为一个唯一的key值找到对应的用户。
所以说sessionid的唯一性用来区别和查询用户信息,因此sessionid的作用不言而喻。
2、我们经常说浏览器关闭后session就会被清除,那session有生命周期么?
有的,这个是服务器的配置,浏览器关闭只是把sessionid给清除了,所以在此打开浏览器并请求服务,你的登录状态无法找到,由此你需要重新登录。
一般情况下,浏览器如果不刷新或者不重新请求的话,服务器一般会缓存session数据20分钟左右。
3、cookie会被缓存,sessionid保存在cookie中,sessionid一定会被清除么?
不一定,这个需要服务器cookie的设置了,但总体而言,因安全性考量,最好不要缓存sessionid
4、cookie保存用户状态时需要保存sessionid么?
不需要,保存user_id或者其他token即可
5、cookie是如何发送到服务器的?
使用http请求头,浏览器进行了封装,但在一般网络编程时可以加上
参考资料来源:百度百科--setcookie
参考技术A一、形式不同
1、set-cookie是一个函数,由服务器发送一个HTTP-cookie到浏览器。
2、cookie是服务器发送到浏览器的变量。
二、存在形式
1、Cookie:独立于语言存在,也就是说,不论是PHP还是JSP(亦或是Java、.Net等其他语言)设置的Cookie,其本质都是一样滴,客户端脚本Javascript都能读取到。
2、set-cookie:PHP函数setcookie()和setrawcookie()均可设置Cookie,它们都有一个boolean型的返回值,如果是false,代表设置失败;如果是true,代表设置成功。但这个返回值仅供参考,并不能保证100%客户端能够成功。
三、作用不同
1、Cookie是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的Cookie就好像你的一张身份证,你电脑上的Cookie和其他电脑上的Cookie是不一样的
2、set-cookie()函数向客户端发送一个HTTPcookie。cookie是由服务器发送到浏览器的变量。cookie通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个cookie。
cookie写入与读取
Cookies集合是附属于Response对象及Request对象的数据集合,使用时需要在前面加上Response或Request。用于给客户机发送Cookies的语法通常为:
<%Response.cookies(“Cookies名称”)=数据%>
当给不存在的Cookies集合设置时,就会在客户机创建,如果该Cookies己存在,则会被代替。由于Cookies是作为HTTP传输的头信息的一部分发给客户机的,所以向客户机发送Cookies的代码一般放在发送给浏览器的html文件的标记之前。如果用户要读取Cookies,则必须使用Request对象的Cookies集合,其使用方法是:
<%efg=request.cookies(“abc”)(将cookies对象abc的值赋给efg)%>
需要注意的是,只有在服务器未被下载任何数据给浏览器前,浏览器才能与Server进行Cookies集合的数据交换,一旦浏览器开始接收Server所下载的数据,Cookies的数据交换则停止,为了避免错误,要在程序和前面加上response.Buffer=True。
以上内容参考 百度百科-cookie;百度百科-setcookie
参考技术B Cookie是在远程浏览器端存储数据并以此跟踪和识别用户身份的机制。从实现上来说,Cookie是存储在客户端的一小段数据,浏览器(即客户端)通过HTTP协议和服务器端进行Cookie的交互。注:在实际应用中能管理Cookie的客户端不仅仅只有浏览器,当然作为Web应用我们最常见的客户端即是浏览器,这个概念我们应该加以理解。
Cookie独立于语言存在,也就是说,不论是PHP还是JSP(亦或是Java、.Net等其他语言)设置的Cookie,其本质都是一样滴,客户端脚本Javascript都能读取到。从严格的意义上来讲,Cookie并不是由具体的某种语言实现的,这些语言做的仅仅是通过发送HTTP指令,告诉浏览器,最终由浏览器操作Cookie并返回给服务器端。因此,Cookie的真正实现者是浏览器。
举例来说,我们经常使用PHP设置Cookie,但实际上PHP并没有真正设置过Cookie,也可以说是PHP压根没有能力去设置Cookie,PHP能做的只是告诉浏览器,让浏览器去设置Cookie。简单点说,Cookie和PHP没有任何关系,只和浏览器相关,PHP只是遵循某种标准向浏览器发送指令,具体Cookie的设置与管理由浏览器完成。理解这一点,对我们学习Cookie的原理有至关重要的影响。
设置Cookie需要注意以下几点:
PHP函数setcookie()和setrawcookie()均可设置Cookie,它们都有一个boolean型的返回值,如果是false,代表设置失败;如果是true,代表设置成功。但这个返回值仅供参考,并不能保证100%客户端能够成功。
由PHP(服务器端)设置的Cookie不能立即生效,要等到下一个页面才能生效。如果是客户端Javascript设置的,则是立即生效。
Cookie没有显式的删除函数,如果想要删除Cookie,只能将Cookie的expire设置为过去的某个时间点,这样会自动触发浏览器删除Cookie。
而setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。
两者关系是密不可分的。
cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证,你电脑上的cookies和其他电脑上的cookies是不一样的;cookies不能被视作代码执行,也不能成为病毒,所以它对你基本无害。
setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。本回答被提问者采纳
cookie 和 cookiejar 有啥区别?
【中文标题】cookie 和 cookiejar 有啥区别?【英文标题】:What is the difference between cookie and cookiejar?cookie 和 cookiejar 有什么区别? 【发布时间】:2015-09-25 01:15:59 【问题描述】:今天我遇到了“cookiejar”一词(包net/http/cookiejar
)。我试图收集一些关于它的信息,但没有得到任何可以理解的信息。我知道 cookie 是服务器发送给客户端的键/值对,例如:Set-Cookie: foo=10
,浏览器将其存储在本地,然后每个后续请求浏览器会将这些 cookie 发送回服务器,例如: Cookie: foo=10
.
好的,但是 cookiejar 呢?它是什么,长什么样子?
【问题讨论】:
见net/http.CookieJar
。
切向相关:如果您需要使用 cookie 存储数据,请使用 github.com/gorilla/securecookie 或会话。经过身份验证的 cookie 对安全性很重要。
【参考方案1】:
一般来说,它是一个数据存储区,应用程序(无论是否浏览器)将它在请求和响应期间使用的 cookie 放置在其中。所以它真的是一个装饼干的罐子。
【讨论】:
【参考方案2】:正如您在问题中所述,cookie 由浏览器(HTTP 客户端)管理,它们允许将信息存储在客户端计算机上,这些信息由浏览器在后续请求中自动发送。
如果您的应用程序充当客户端(您使用 net/http
包连接到远程 HTTP 服务器),则没有浏览器可以处理/管理 cookie。我的意思是存储/记住作为Set-Cookie:
响应标头到达的cookie,并将它们附加到对同一主机/域发出的后续传出请求。 Cookie 也有过期日期,在决定将它们包含在传出请求中之前,您还必须检查该日期。
http.Client
类型允许您设置http.CookieJar
类型的值,如果您这样做,您将拥有自动 cookie 管理,否则将不存在,或者您必须自己做。这使您可以使用net/http
包执行多个请求,服务器将这些请求视为同一会话的一部分,就像它们是由真实浏览器发出的一样,因为通常使用 cookie 维护 HTTP 会话(会话 ID)。
net/http/cookiejar
包是一个 CookieJar 实现,您可以开箱即用。请注意,此实现仅在内存中,这意味着如果您重新启动应用程序,cookie 将会丢失。
所以基本上HTTP cookie 是从网站发送的一小段数据,并在用户浏览该网站时存储在用户的网络浏览器中。
Cookiejar 是一个简单的 cookie 管理器(用于管理来自 HTTP 请求和响应标头的 cookie)的 Go interface 和一个 implementation of that interface。
【讨论】:
这是一个很好的解释。 这是一个解释,我正在寻找。谢谢以上是关于set-cookie 和 cookie 的区别的主要内容,如果未能解决你的问题,请参考以下文章