摘要:查找原因無(wú)法獲取到是因?yàn)橥床呗院蜆?biāo)記的原因。在同一個(gè)站點(diǎn)下使用屬性是無(wú)效的。此外,這個(gè)指示也會(huì)被用做響應(yīng)中被忽視的標(biāo)示。而通過(guò)設(shè)置為獲得的第三方,將會(huì)依舊享受同源策略,因此不能被通過(guò)或者從頭部相應(yīng)請(qǐng)求的腳本等訪問(wèn)。
作者:codexu
_
瀏覽器里明明存在的cookie,居然獲取不到???
console.log(document.cookie); // 沒(méi)有???起因
近來(lái)閑來(lái)無(wú)事,打算了解一下后端,既然想一探究竟,就從基本的注冊(cè)登錄開(kāi)始做起。
技術(shù)選型作為一名前端開(kāi)發(fā)人員,用 Node.js 去體驗(yàn)后端應(yīng)該是最快上手的方式了??戳艘幌挛臋n,好長(zhǎng)...沒(méi)那么多時(shí)間看,直接...
框架 koa2
數(shù)據(jù)庫(kù) Mysql,不會(huì)操作數(shù)據(jù)庫(kù)找到了 Sequelize
請(qǐng)求 Axios
思路賬戶(hù)密碼,不做加密,直接明文。
登陸
使用 jwt (jsonwebtoken) 生成 token 。
使用 koa2 ctx.cookies.set 在后端設(shè)置 cookie ,保存 token 。
跨域請(qǐng)求 koa2-cors
問(wèn)題來(lái)了問(wèn)題一:填好用戶(hù)名密碼,點(diǎn)擊登錄,瀏覽器中沒(méi)有被設(shè)置 cookie
解決辦法: 使用 Axios 請(qǐng)求時(shí),增加屬性 withCredentials: true,這樣就請(qǐng)求就可以攜帶 cookie 了。
產(chǎn)生這種情況的原因是因?yàn)?koa2-cors,如果在前端使用代理跨域不會(huì)出現(xiàn)這種情況。
問(wèn)題二:瀏覽器中雖然能看到 cookie 中已經(jīng)存在 token,但是前端代碼中獲取不到
解決辦法:koa2 設(shè)置 cookie 時(shí),設(shè)置 httpOnly: false 即可。
查找原因doucment.cookie 無(wú)法獲取到 cookie 是因?yàn)?同源策略 和 HttpOnly 標(biāo)記的原因。
withCredentials:表示跨域請(qǐng)求時(shí)是否需要使用憑證,默認(rèn)是 false
MDN
XMLHttpRequest.withCredentials 屬性是一個(gè) Boolean 類(lèi)型,它指示了是否該使用類(lèi)似 cookies,authorization headers(頭部授權(quán))或者TLS客戶(hù)端證書(shū)這一類(lèi)資格證書(shū)來(lái)創(chuàng)建一個(gè)跨站點(diǎn)訪問(wèn)控制(cross-site Access-Control)請(qǐng)求。在同一個(gè)站點(diǎn)下使用 withCredentials 屬性是無(wú)效的。
此外,這個(gè)指示也會(huì)被用做響應(yīng)中 cookies 被忽視的標(biāo)示。默認(rèn)值是 false。
如果在發(fā)送來(lái)自其他域的 XMLHttpRequest 請(qǐng)求之前,未設(shè)置 withCredentials 為true,那么就不能為它自己的域設(shè)置 cookie 值。而通過(guò)設(shè)置 withCredentials 為true獲得的第三方 cookies,將會(huì)依舊享受同源策略,因此不能被通過(guò) document.cookie 或者從頭部相應(yīng)請(qǐng)求的腳本等訪問(wèn)。
httpOnly:服務(wù)器可訪問(wèn) cookie, 默認(rèn)是 true
MDN換種方式
為避免跨域腳本 (XSS) 攻擊,通過(guò)JavaScript的 Document.cookie API無(wú)法訪問(wèn)帶有 HttpOnly 標(biāo)記的Cookie,它們只應(yīng)該發(fā)送給服務(wù)端。如果包含服務(wù)端 Session 信息的 Cookie 不想被客戶(hù)端 JavaScript 腳本調(diào)用,那么就應(yīng)該為其設(shè)置 HttpOnly 標(biāo)記。
MDN 上說(shuō) 可能會(huì) XSS 攻擊,所以換種方式,存儲(chǔ)到 localstorage 里吧。請(qǐng)求時(shí),將 token 加在 header 中 Authorization。
總結(jié)雖然繞了一圈,好像總結(jié)了兩個(gè)沒(méi)啥卵用的知識(shí)點(diǎn),但是學(xué)習(xí)就是這樣,遇到坑就積累一下。
希望有大佬能指點(diǎn)一下,如何做一個(gè)安全的登錄。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/106886.html
摘要:先把當(dāng)成文件,依次查找當(dāng)前目錄下的,找到了,就返回該文件,不再繼續(xù)執(zhí)行。那么關(guān)于正確的結(jié)論是在中使用是跟的效果相同,不會(huì)因?yàn)閱?dòng)腳本的目錄不一樣而改變,在其他情況下跟效果相同,是相對(duì)于啟動(dòng)腳本所在目錄的路徑。 起因 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動(dòng)態(tài),大家一起多交流學(xué)習(xí),共同進(jìn)步,以學(xué)習(xí)者的身份寫(xiě)博...
摘要:先把當(dāng)成文件,依次查找當(dāng)前目錄下的,找到了,就返回該文件,不再繼續(xù)執(zhí)行。那么關(guān)于正確的結(jié)論是在中使用是跟的效果相同,不會(huì)因?yàn)閱?dòng)腳本的目錄不一樣而改變,在其他情況下跟效果相同,是相對(duì)于啟動(dòng)腳本所在目錄的路徑。 起因 原文收錄在我的 GitHub博客 (https://github.com/jawil/blog) ,喜歡的可以關(guān)注最新動(dòng)態(tài),大家一起多交流學(xué)習(xí),共同進(jìn)步,以學(xué)習(xí)者的身份寫(xiě)博...
摘要:初來(lái)乍到,請(qǐng)多多指教,踏入廣州那一刻,我滿(mǎn)懷熱情的對(duì)廣州說(shuō)。本以為,作為大學(xué)畢業(yè)的我,在國(guó)內(nèi)最大的軟件服務(wù)商被寄予厚望的我,在廣州應(yīng)該也是個(gè)熱餑餑,不愁吃不愁穿不愁的。然而現(xiàn)實(shí)是廣州的公司對(duì)我并沒(méi)有多多指教,而是多多拋棄。 十月,金秋季節(jié),本是豐收之時(shí),卻因?yàn)殛懤m(xù)有同事離職,心中多少有些悲涼之意,頓然想起從參加工作到現(xiàn)在,五年已過(guò),當(dāng)年青澀懵懂的小年輕,如今出街招搖過(guò)市時(shí),被小孩子看到...
摘要:初來(lái)乍到,請(qǐng)多多指教,踏入廣州那一刻,我滿(mǎn)懷熱情的對(duì)廣州說(shuō)。本以為,作為大學(xué)畢業(yè)的我,在國(guó)內(nèi)最大的軟件服務(wù)商被寄予厚望的我,在廣州應(yīng)該也是個(gè)熱餑餑,不愁吃不愁穿不愁的。然而現(xiàn)實(shí)是廣州的公司對(duì)我并沒(méi)有多多指教,而是多多拋棄。 十月,金秋季節(jié),本是豐收之時(shí),卻因?yàn)殛懤m(xù)有同事離職,心中多少有些悲涼之意,頓然想起從參加工作到現(xiàn)在,五年已過(guò),當(dāng)年青澀懵懂的小年輕,如今出街招搖過(guò)市時(shí),被小孩子看到...
閱讀 5037·2021-09-22 14:57
閱讀 624·2019-08-30 15:56
閱讀 2721·2019-08-30 15:53
閱讀 2296·2019-08-29 14:15
閱讀 1741·2019-08-28 17:54
閱讀 614·2019-08-26 13:37
閱讀 3541·2019-08-26 10:57
閱讀 1109·2019-08-26 10:32