vue無法獲取flask設定的cookie
阿新 • • 發佈:2022-12-11
最近在使用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,問題解決!