标签:
摘自: http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html
Cookie是什么? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。
为什么需要Cookie? 因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分 是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。
使用浏览器端的js语句来检测,具体思路是,先设置一个cookie, 然后尝试读取此cookie,如果读取不到则表示,浏览器不支持此cookie, 如果能够读取到, 则表示浏览器支持cookie。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="./jquery.js"></script> <link rel="stylesheet" href="./test.css" /> </head> <body> <style> <!-- #template{ background:red; }--> <!-- error --> </style> <div id="template" name="template"> <input type="button" id="testBtn" value="click me"> </div> <script> function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值 { var Days = 30; //此 cookie 将被保存 30 天 var exp = new Date(); //new Date("December 31, 9998"); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getCookie(name)//取cookies函数 { var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; } function delCookie(name)//删除cookie { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); } //检测是否支持cookie SetCookie(‘cookie_test‘,‘1‘); var cookie_test = getCookie(‘cookie_test‘); if( ‘1‘ != cookie_test) { alert(‘不支持‘); } else { alert(‘支持‘); } </script> </body> </html>
有时候,例如大多数的网址登陆都需要cookie支持, 如果cookie关闭,则后台登陆功能也应该同步关闭,不允许有请求过去进行强制登陆, 这样就需要通过一种手段让服务器知道浏览器是否支持cookie。
在http报文中, 没有特殊的头域来标识浏览器对cookie的支持程度,
可以采用两次访问方法解决: 第一次页面访问,服务器在响应头中添加cookie信息, 第二次页面访问则会带有cookie信息(如果浏览器支持), 服务器端收到第一次访问设置的cookie信息,则表示浏览器支持cookie。
下面示例代码,第一次访问,_TESTCOOKIE为空, 第二次访问打印出来是1
<?php header("Set-Cookie: _TESTCOOKIE=1"); echo ‘Hello _TESTCOOKIE=‘ . htmlspecialchars($_COOKIE["_TESTCOOKIE"]) . ‘!‘; exit; ?>
标签:
原文地址:http://www.cnblogs.com/lightsong/p/4188156.html