檢測瀏覽器是否支持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;
?>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM