当前位置: 首页 > 后端技术 > PHP

饼干和会议

时间:2023-03-29 21:10:40 PHP

饼干1。它是什么?服务器保存在浏览器中的一小段文本信息,≤4kB不同的浏览器或不同的网站有不同的cookies。同一个网站和不同的浏览器有相同的cookie键值,不同的值和不同的键值顺序。问题:SRCHD=AF=NOFORM;这个cookie的键值对是什么?答:字符串中的第一个=作为键值对的分隔符,所以cookie的key为SRCHD,value为AF=NOFORM,如下图:2、功能?HTTP无状态服务器用于区分两个请求是否来自同一个浏览器,并保存一些状态信息对话管理:登录、购物车等对话管理个性化:网页字体大小、背景颜色等用户偏好跟踪:记录和分析用户行为3.如何设置?每个cookie键值对可以设置Expires、Max-Age、Path、Domain、Secure、HttpOnly等属性Expire、Max-Age(秒):同时Max-Age优先级高,如果是未设置,是sessioncookieDomain,Path:域名,HTTP请求路径/...Secure:只向服务器发送HTTPS加密请求(不保证绝对安全),http协议自动关闭,https协议为自动开启HttpOnly:无法通过document.cookie访问,只能发送给服务器Cookie创建:浏览器和服务器都可以创建cookie:浏览器可以使用jsdocument.cookie="key=value";设置服务端使用对应语言的cookie操作函数(如php的setcookie),然后服务端返回给客户端的HTTPResponse头中会携带Set-Cookie。浏览器获取到cookie后,会在后续的请求头中带上cookie。下面是服务端在header中返回Set-Cookie的例子:Set-Cookie:id=a3fWa;expires=2015年10月21日星期三07:28:00GMT;安全;httpOnly=真;域名=bing.com;路径=/;流程:浏览器第一次访问服务器>>>服务器在响应头中写入cookie返回给浏览器>>>浏览器携带cookie再次访问服务器>>>服务器判断请求来自基于cookie的同一服务器浏览器cookie更改:调用两端的cookie设置函数重写原来的key。这里需要注意的是,name、domain、path、secure属性必须和原来的属性匹配,才能修改原来的值。否则,将生成一个新的同名cookie。Cookie删除:重新调用各端的cookie设置函数,将要删除的cookie的expire属性设置为一个过期时间(目前在浏览器控制台,服务端发送cookie修改、删除等设置无效)4.安全问题?客户端修改了cookie怎么办?可以通过设置HttpOnly属性来阻止浏览器通过document.cookie来访问和操作cookie,为cookie添加哈希值。签名:签名前:SID=s%3Aefg签名后:SID=s%3Aefg.7FJDuO2E9LMyby6%2Bo1fGQ3wkIHGB9v1CDVWod8NQVAo(nodejs示例)(node.js使用cookieParser中间件进行签名和取消签名)session1.它是什么?会话控制,会话对象存储特定用户会话所需的信息2.功能?在服务器端保存重要的session信息比直接在客户端使用cookies保存更安全。3、使用过程?浏览器第一次访问服务器>>>服务器生成唯一标识sessionID和存储session信息的session对象。sessionID放在返回的请求头中的Set-Cookie中返回给浏览器>>>浏览器携带包含sessionID的cookie再次访问服务器>>>服务器取出cookie中的sessionID继续后续处理4.保存在哪里?优缺点内存获取速度快。当并发请求较多时,服务器内存占用较多,容易造成内存溢出;分布式环境无法实现session共享;服务器断电重启,会话丢失且无法恢复。会话仍然可用,采集速度慢;在分布式环境中,会话文件需要复制到多个服务器。redis获取速度快;分布式共享;cookievssession在有效期内可以取回。数据的有效期可以长期实现。一般在会话期间有效,时间不宜过长。fullclienttransparentclientopaqueserver压力为零并发用户多时,消耗大量内存/redis浏览器支持禁用cookie,跟踪无效,禁用cookie,url可以改写其他文件:PHP中的session:https://www.dragonballsoft.cn...