1. 程式人生 > 其它 >vue無法獲取flask設定的cookie

vue無法獲取flask設定的cookie

最近在使用vue3開發基於flask後端的前後端分離專案時候,

設定路由守衛時一直無法獲取到登入後的cookie中session值

但是在瀏覽器中卻可以看到cookie

先上程式碼

router.beforeEach((to, from, next) => {
  if (to.path == '/login') {
    next()
  } else {
    const session = getCookieValue("session")
    console.log('session--->', session)
    if (session) {
      next()
    } 
else { ElNotification({ title: '錯誤', message: '請重新登入!', type: 'error' }) next({path: 'login'}) } } })
/*
    獲取指定名稱的cookie值
*/ 
export function getCookieValue(name) {
    let result = document.cookie.match(
      "(^|[^;]+)\\s*" + name + "\\s*=\\s*([^;]+)
" ); return result ? result.pop() : ""; }

這是因為cookie中的HttpOnly屬性是true,這使得我們在瀏覽器中使用js是無法訪問cookie的

只需要在後端設定cookie時將HttpOnly關閉掉就可以了(預設是開啟狀態)

# flask-session配置
    SESSION_TYPE = "redis"
    SESSION_REDIS = redis.StrictRedis(host=HOSTNAME, port=REDIS_PORT)
    SESSION_COOKIE_HTTPONLY = False  #
使cookie可以被訪問 SESSION_USE_SIGNER = True # 對cookie中session_id進行隱藏處理 PERMANENT_SESSION_LIFETIME = 86400 # session資料的有效期,單位秒 24小時


OK,問題解決!