javascript - 前后端分離的項(xiàng)目可以設(shè)置cookies保持狀態(tài)么?
問(wèn)題描述
項(xiàng)目采用前后端分離 前臺(tái)是在本地服務(wù)器,使用的VUE。 后端接口在阿里云上 后臺(tái)童鞋說(shuō)首次訪(fǎng)問(wèn)后設(shè)置cookies 每次訪(fǎng)問(wèn)帶過(guò)去的cookies應(yīng)該相同 可是我在本地測(cè)試 他返回給我的set-cookie都不同 請(qǐng)問(wèn)這是什么原因啊?
eg: 兩個(gè)接口,比如下面
get_user.json 這個(gè)接口會(huì)給我set-cookies,我前端能不能拿到這個(gè)set-cookies呢?
2. 然后我登陸成功后再去獲取訂單信息 get_order.json的話(huà),后端就會(huì)顯示`未登錄`,我發(fā)現(xiàn)后端set-cookie也發(fā)生了變化,為什么?
我想讓服務(wù)器記住登錄狀態(tài),我的想法是 登錄成功后拿到這個(gè)set-cookie,然后每次把得到的這個(gè)cookie發(fā)送給后端實(shí)現(xiàn)記住狀態(tài)。
但問(wèn)題是前段沒(méi)法拿到這個(gè)set-cookie的值,我用的是axios
問(wèn)題解答
回答1:你前端發(fā)起請(qǐng)求到后臺(tái),這里跨域了,不會(huì)帶上已有的 Cookie。
解決方案
自己架個(gè)反向代理啥的把兩個(gè)搞到一個(gè)域名上。
前端設(shè)置withCredentials,后端設(shè)置Access-Control-Allow-Credentials。
回答2:設(shè)置了 HttpOnly 屬性的 cookie 不能使用 JavaScript 經(jīng)由 Document.cookie 屬性、XMLHttpRequest 和 Request APIs 進(jìn)行訪(fǎng)問(wèn),以防范跨站腳本攻擊(XSS)。
至于為什么這個(gè)值會(huì)變化,這是跟后端的session機(jī)制有關(guān)。當(dāng)你瀏覽一個(gè)網(wǎng)頁(yè)時(shí),服務(wù)端隨機(jī)產(chǎn)生一個(gè)字符串,然后存在你cookie中。當(dāng)你下次訪(fǎng)問(wèn)時(shí),cookie 會(huì)帶有這個(gè)字符串,由于字符串是隨機(jī)產(chǎn)生的,而且位數(shù)足夠多,所以也不擔(dān)心有人能夠偽造。
相關(guān)文章:
1. 如何解決docker宿主機(jī)無(wú)法訪(fǎng)問(wèn)容器中的服務(wù)?2. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas3. angular.js - 輸入郵箱地址之后, 如何使其自動(dòng)在末尾添加分號(hào)?4. javascript - html5的data屬性怎么指定一個(gè)function函數(shù)呢?5. python - Scrapy存在內(nèi)存泄漏的問(wèn)題。6. 在mac下出現(xiàn)了兩個(gè)docker環(huán)境7. docker-compose中volumes的問(wèn)題8. java如何生成token?9. javascript - 后臺(tái)管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過(guò)搜索去定位到具體某一個(gè)菜單項(xiàng)位置,并展開(kāi)當(dāng)前菜單10. javascript - Web微信聊天輸入框解決方案
