cookie簡單理解
cookie 是瀏覽器端儲存資料的技術. 伺服器不能儲存 cookie, 但是伺服器可以傳送請求命令瀏覽器儲存 cookie.
如何儲存 cookie
在 document 中有一個屬性 叫 cookie
cookie 是一個 鍵值對, 是一個使用 等號 連線的鍵值, 是一個字串
cookie 直接使用 賦值來追加資料
多個 cookie 的資料使用 分號空格 連線, 並且他也是一個字串
cookie 的儲存特點
1> cookie 預設是生命週期是瀏覽器關閉以前
2> cookie 在多個頁面中可以共享資料
3> cookie 可以伴隨 http 請求傳遞資料
4> cookie 在儲存非 ascii 碼的時候要使用指定方法來轉換
escape, unescape
encodeURI, decodeURI
encodeURIComponent, decodeURIComponent
5> cookie 的儲存可以設定生命週期
給每一個 cookie 值新增一個屬性 expires, 其取值為一個 時間型別的字串
今天基本上使用 max-age 來代替 expires 屬性, max-age 取值是秒數
6> cookie 的訪問級別( path )
使用 path 屬性可以配置 cookie 的訪問級別, 即哪一個資料夾下的檔案可以訪問該 cookie
預設是 ./
如果希望上一級目錄可以訪問, 就給 path 賦值上一級目錄的目錄名
如果希望整個網站都可以訪問, 那麼使用 path=/ 即可
7> cookie 不能夠跨域, 但是可以是設定同域的訪問級別( domain )
8> cookie 還有一個特性 secure
cookie 會伴隨著 http 請求傳送.
secure 如果設定為 true 表示只有在 https 請求的時候傳送
9> 一般如果希望不使用 cookie 來儲存資料( 會隨著 HTTP 請求提交 )
可以使用隱藏域: <input type="hidden" >
html5 開始引入了其他的儲存資料的辦法: 本地儲存( localStorage )
如何讀取 cookie 中的資料
讀取的時候會將所有的資料都一併取出來, 但是並非全部資料我都需要, 因此這裡需要對資料進行解析
cookie 資料格式: '鍵=值; 鍵=值; 鍵=值'
獲得資料的時候理論上是利用鍵名取對應 的值
字典結構( 鍵值對結構 )
將 cookie 字串轉換成 一個 物件的演算法
function getCookie() {
var cookies = document.cookie.split( ';' ).map(function ( v ) { return v.trim(); });
var cookie = {};
cookies.forEach( function ( v ) {
var kv = v.split( '=' );
cookie[ kv[ 0 ] ] = kv[ 1 ];
});
return cookie;
}
在伺服器端如何操作 cookie 和 session
$_COOKIE
$_SESSION
cookie 是瀏覽器端的操作, 所以伺服器 不 可以操作 cookie.
在伺服器端允許向 瀏覽器傳送一個 set-cookie 的響應