[RIA]关于cookie--摘自我们公司一个牛人的解释 |
开始之前先了解一下cookie的工作原理,cookie在不同的语言领域,由于语言的封装,会有不同的形态,在我们的工程环境中,大概会出现这些形态:
1. Javascript 访问形态:通过document.cookie访问(读|写)
2. php访问形态:通过$_COOKIE setCookie() 访问
3. HTTP报文形态:最本质的一种形态
下面分别详细的介绍一下:
Cookie在HTTP报文中有两种形态:
1. Set-Cookie:name=value; expires=Thu, 25-Dec-2008 03:46:04 GMT; path=/; domain=xyz.com; secure
这是服务器返回的HTTP头中的cookie形态,在HTTP头中每个cookie占一行,开头都是Set-Cookie:
注意结尾段 secure,这个标识的最后并没有分号,而是以回车结束一条cookie。如果服务器发送了多条cookie,则会有多个的Set-Cookie段 出现HTTP头中。
2. Cookie:name=value; name=value;
这是客户端发送给服务器端的cookie形态。客户端提交的cookie,并不会有cookie的限定(比如时间限定,域限定),也不需要限定(因为cookie限制本身就是有客户端定制的)。客户端在向某个域的页面发起一个请求的时候,会将本地所有合法的cookie提交给服务器(前提是cookie没有被禁用)
Cookie在Javascript中的形态:
在browser中,Javascript访问cookie只有一个方法,通过document.cookie属性读写。这种操作在java语言中 很常见,actionscript中已经提供了这种支持,比如:
class cookie{
function set cookie(){}
function get cookie(){}
}
这种设置貌似叫做:隐式设置 。这里为什么提到这个,因为document.cookie的读写是不对称的,所以 document.cookie并非一个显式的属性。
读取cookie的时候,取到的键值对,分号分割
设置cookie的时候是标准的HTTP报文格式的cookie段,和HTTP形态中的Set-cookie:端的值相同
Cookie在PHP中的形态
PHP作为CGI程序,会自动解析HTTP报文中的cookie,并将它存成全局可访问的$_COOKIE对象中
而在写入cookie时,php封装了setcookie()方法,详细参考php手册;
注意点:
1. cookie中设置boolean值时注意,不能设置为 true | false ,因为设置成false,客户端会删除cookie,因采用o|1标示
2. 服务器端程序:非必要,不要随意写cookie。这是一种负担,cookie有expires,显然不需要每次去写,所以后端框架设计者要注意这一点。另外,Yahoo的工程师曾做过测试,cookie的大小对性能的影响,虽然cookie对性能的影响是非线性的,但是可以确定的是,越小越好。
3. 测试发现,php,javascript对cookie的设置,默认path是当前页面的path。这个需要重视,当你的cookie要在不同的path间穿梭的时候,请务必设置到公共可访问的path。
|
|
|  .: 公告
|
« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| .: 我的分类(专题) |  .: 最新日志 .: 最新回复
| 
blog名称:up forever 日志总数:130 评论数量:274 留言数量:4 访问次数:1950737 建立时间:2006年5月25日 |
|  .: 留言板 |  .: 链接 |

|