cookie的設置與取值

来源:https://www.cnblogs.com/restart77/archive/2020/02/20/12336349.html
-Advertisement-
Play Games

設置cookie function cookie(key, value, options) { let days let time let result // A key and value were given. Set cookie. if (arguments.length > 1 && St ...


設置cookie

function cookie(key, value, options) {
  let days
  let time
  let result

  // A key and value were given. Set cookie.
  if (arguments.length > 1 && String(value) !== '[object Object]') {
    // Enforce object
    options = Object.assign({}, options)
    if (value === null || value === undefined) {
      options.expires = -1
    }
    if (typeof options.expires === 'number') {
      days = options.expires * 24 * 60 * 60 * 1000
      time = options.expires = new Date()
      time.setTime(time.getTime() + days)
    }
    value = String(value)

return (document.cookie = `${encodeURIComponent(key)}=${
  options.raw ? value : encodeURIComponent(value)
}
${options.expires ? `; expires=${options.expires.toUTCString()}` : ''}
${options.path ? `; path=${options.path}` : ''}
${options.domain ? `; domain='${options.domain}` : ''}
${options.secure ? '; secure' : ''}`)
  }

  // Key and possibly options given, get cookie
  options = value || {}
  const decode = options.raw
    ? function(s) {
        return s
      }
    : decodeURIComponent
  return (result = new RegExp(`(?:^|; )${encodeURIComponent(key)}=([^;]*)`).exec(document.cookie))
    ? decode(result[1])
    : null
}

/** * getCookie 獲取cookies * @param {String} key * @param {String} defultValue */

function getCookie() {
  const args = Array.prototype.slice.call(arguments)
  const key = args.length > 0 ? args[0] : null
  const defaultValue = args.length > 1 ? args[1] : ''
  // const cookieValue =cookie(key)
  let result = new RegExp(`(?:^|; )${encodeURIComponent(key)}=([^;]*)`).exec(document.cookie)
  result = result ? result[1] : null
  try {
    return result === null ? defaultValue : result
  } catch (error) {
    throw error
  }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 講述面向對象中的一個重要概念——繼承,使用繼承 可以方便地在已有類的基礎上進行擴展,定義一個具有父 類全部功能的新類。 父類和子類 我們在定義一個新類的時候,經常會遇到要定義的新類是某個類的擴展或者是對某個類的修正 這種情況。如果可以在已有類的基礎上追加內容來定義新類,那麼新類的定義將會變得更簡單。 ...
  • 完整代碼下載: 百度網盤地址 https://pan.baidu.com/s/1qFsRoODkccF1VkEsGLsQTw 提取碼 :p4zr 永久有效 有疑問可以給我發郵件:[email protected] || [email protected] 1 註冊頁面 2 登錄頁面 3 登錄成功主 ...
  • 可以用jQuery中的unbind()來進行事件解綁。 1 $(window).scroll(function() { 2 console.log("滾離頂部" + $(document).scrollTop()); 3 4 //... 5 6 //對window對象進行scroll事件解綁 7 $ ...
  • Callback hell回調地域 當我們以同步的方式編寫耗時的代碼,那麼就會阻塞JS的單線程,造成CPU一直等待IO完成才去執行後面的代碼。 而CPU的執行速度是遠遠大於硬碟IO速度的,這樣等待只會造成資源的浪費。 非同步IO就是為瞭解決這個問題的,非同步能儘可能不讓CPU閑著,它不會在那等著IO完成 ...
  • 概述:"一個處理函數會在延遲n秒後觸發,如果在n秒內再次觸發那麼回重新計時; 優點:防止用戶由於過快的操作而發起的無用的請求; 使用場景: 1、淘寶的導航列表; 2、搜索框搜索輸入。只需用戶最後一次輸入完成,在發送請求; 3、瀏覽器的視窗大小改變後,只需視窗調整完成後,在執行 裡面是代碼,防止重新渲 ...
  • 以下是給大家介紹前端開發的填詞,曲子是李聖傑的《最近》,大家喜歡可以試試唱。 點贊關註超過100的平臺,我後續上來發本人原唱視頻(目前正在練習中...),另外大家覺得哪些詞寫得不好的,歡迎評論給與建議,謝謝!! ...
  • /** * 垂直方向是否在可視區域內 */ function isInViewY(element, offset) { const pageYScroll = window.pageYOffset || document.documentElement.scrollTop; const pageHe ...
  • 分頁獲拉取下一頁數據 function loadNextPageData(self, callball) { if (window.IntersectionObserver) { const options = { root: null, threshold: 0 } const handleInt ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...