zoukankan      html  css  js  c++  java
  • 检测浏览器是否支持cookie方法

    cookie

    摘自: 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;
    ?>

  • 相关阅读:
    python_levenshtein 的安装和使用
    接口测试困难
    pycharm修改windows的IP
    Excel读取,修改,新建
    appium混合应用的处理
    冒泡排序
    选择排序
    插入排序
    python中两种退出方式os._exit(),sys.exit()
    二分查找
  • 原文地址:https://www.cnblogs.com/lightsong/p/4188156.html
Copyright © 2011-2022 走看看