HTTP Cookie(也叫 Web Cookie 或瀏覽器 Cookie)是服務器發送到用戶瀏覽器並保存在本地的一小塊數據,它會在瀏覽器下次向同一服務器再發起請求時被攜帶併發送到服務器上。一般,它用於告知服務端兩個請求是否來自同一瀏覽器,如保持用戶的登陸狀態。Cookie 使基於無狀態的 HTTP 協議記錄穩定的狀態信息成爲了可能。git
Cookie 曾一度用於客戶端數據的存儲,因當時並無其它合適的存儲辦法而做爲惟一的存儲手段,但如今隨着現代瀏覽器開始支持各類各樣的存儲方式,Cookie 漸漸被淘汰。因爲服務器指定 Cookie 後,瀏覽器的每次請求都會攜帶 Cookie 數據,會帶來額外的性能開銷(尤爲是在移動環境下)。新的瀏覽器 API 已經容許開發者直接將數據存儲到本地,如使用 Web storage API (本地存儲和會話存儲)或 IndexedDB 。github
Cookie 用於如下幾個方面:chrome
chrome 的實際截圖如: npm
cookie 能夠經過服務器端返回響應頭Set-Cookie: <cookie名>=<cookie值>
來修改瀏覽器的端的 cookie,固然這個就不展開了,每種後臺語言都很容易處理。json
客戶端處理 cookie,能夠用原生的 js 來控制,另外也能夠經過js-cookie插件。瀏覽器
引入腳本安全
<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
添加 cookie服務器
// Create a cookie, valid across the entire site: Cookies.set('name', 'value'); // Create a cookie that expires 7 days from now, valid across the entire site: Cookies.set('name', 'value', { expires: 7 }); // Create an expiring cookie, valid to the path of the current page: Cookies.set('name', 'value', { expires: 7, path: '' });
讀取具名的 cookiecookie
Cookies.get('name'); // => 'value' Cookies.get('nothing'); // => undefined
讀取全部的 cookie併發
Cookies.get(); // => { name: 'value' }
Cookies.set('name', 'value', { path: '' }); Cookies.remove('name'); // fail! Cookies.remove('name', { path: '' }); // removed!
Cookies.set('name', { foo: 'bar' }); Cookies.get('name'); // => '{"foo":"bar"}' Cookies.get(); // => { name: '{"foo":"bar"}' } Cookies.getJSON('name'); // => { foo: 'bar' } Cookies.getJSON(); // => { name: { foo: 'bar' }
Cookies.set('name', 'value', { expires: 365 }); Cookies.get('name'); // => 'value' Cookies.remove('name');
Cookies.set('name', 'value', { path: '' }); Cookies.get('name'); // => 'value' Cookies.remove('name', { path: '' });
Cookies.set('name', 'value', { domain: 'subdomain.site.com' }); Cookies.get('name'); // => undefined (need to read at 'subdomain.site.com')
已經被淘汰的東西了,請使用 Web storage API (本地存儲和會話存儲)或 IndexedDB