在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 刷新頁面后請求中沒有cookie

刷新頁面后請求中沒有cookie

api.js

api.post('/user/login', async(ctx) => {
    var username = ctx.request.body.username,
        password = ctx.request.body.password;

    //檢測用戶名或密碼是否為空
    if(username === '' || password === ''){
        responseData.code = 1;
        responseData.message = '用戶名或密碼不能為空';
        ctx.body = responseData;
        return;
    }

    //查詢數(shù)據(jù)庫中用戶名或密碼是否存在,若存在則登陸成功
    ctx.body = await new Promise(function(resolve, reject){
        User.findOne({username: username, password: password}, function(err, doc){
            if(doc){
                responseData.code = 0;
                responseData.message = '登錄成功';
                responseData.userMsg = {_id: doc._id, username: doc.username};
                ctx.cookies.set('userMsg', JSON.stringify(responseData.userMsg), {
                    domain: 'localhost',
                    path: '/user/login',
                    maxAge: 10 * 60 * 1000,
                    httpOnly: false,
                    overwrite: false
                });
                resolve(responseData);
            }else{
                responseData.code = 2;
                responseData.message = '用戶名或密碼錯誤';
                resolve(responseData);
            };

            if(err){
                reject(err);
            }
        })
    })
})

登錄頁面后由setcookie
圖片描述

刷新頁面后請求中沒有cookie信息
圖片描述

回答
編輯回答
毀了心

setcookie指定的path和你第二次請求的path不一致,不會帶上。

沒有特殊原因,不要手動指定cookie的path

更新
如果你刪除path之后返回的響應(yīng)頭還有這個path,以下原因:

  1. 沒有刪除

  2. 服務(wù)器沒有重啟

clipboard.png

2018年8月9日 13:05
編輯回答
妖妖

html 請求是無狀態(tài)鏈接,也就是說你的 api 請求數(shù)據(jù)回來后,服務(wù)器和客戶端終端斷了鏈接。

怎么辦呢?
這個時候我們可以和服務(wù)器約定一個"暗號";
請求服務(wù)器成功后返回的數(shù)據(jù)包里帶上"暗號",然后我們要把獲取到的"暗號"存到本地的 cookie 里面,或者 localStorage 里面(這樣刷新或打開瀏覽器新的標簽"暗號"不會丟失),后面再請求的時候把這個"暗號"帶上一起發(fā)給服務(wù)器,服務(wù)器讀取后就能知道你是誰了。

一般我們把這個"暗號"帶到 api 請求頭里面發(fā)送給服務(wù)器。

所以廢話了這么多,要說的是把信息保存到 cookie 或者 localStorage里,要的時候去取就可以解決你這個刷新丟失 cookie 的問題。

2017年1月8日 03:21