vue webpack重寫cookie路徑的方法
Cookie詳解
Cookie在遠程瀏覽器端存儲數(shù)據(jù)并以此跟蹤和識別用戶的機制。從實現(xiàn)上說,Cookie是存儲在客戶端上的一小段數(shù)據(jù),瀏覽器(即客戶端)通過HTTP協(xié)議和服務(wù)器端進行Cookie交互。
Cooke獨立于語言存在,嚴格地說,Cookie并不是由PHP、Java等語言實現(xiàn)的,而是由這些語言對Cookie進行間接操作,即發(fā)送HTTP指令,瀏覽器收到指令便操作Cookie并返回給服務(wù)器。因此,Cookie是由瀏覽器實現(xiàn)和管理的。舉例說,PHP并沒有真正設(shè)置過Cookie,只是發(fā)出指令讓瀏覽器來做這件事。PHP中可以使用setcookie() 或 setrawcookie() 函數(shù)設(shè)置Cookie。setcookie()最后一個參數(shù)HttpOnly設(shè)置了后,JavaScript就無法讀取到這個Cookie。
設(shè)置Cookie時需注意:①函數(shù)有返回值,false失敗,true成功,成功僅供參考,不代表客戶端一定能接收到;②PHP設(shè)置的Cookie不能立即生效,要等下一個頁面才能看到(Cookie從服務(wù)器傳給瀏覽器,下個頁面瀏覽器才能把設(shè)置的Cookie傳回給服務(wù)器);如果是JavaScript設(shè)置的,是立即生效的;③Cookie沒有顯示的刪除函數(shù),可以設(shè)置expire過期時間,自動觸發(fā)瀏覽器的刪除機制。
Cookie是HTTP頭的一部分,即現(xiàn)發(fā)送或請求Cookie,才是data域;setcookie()等函數(shù)必須在數(shù)據(jù)之前調(diào)用,這和header() 函數(shù)是相同的。不過也可以使用輸出緩沖函數(shù)延遲腳本的輸出,知道設(shè)置好所有Cookie和其他HTTP標頭。
Cookie通常用來存儲一些不是很敏感的信息,或者進行登錄控制,也可用來記住用戶名、記住免密碼登錄、防止刷票等。每個域名下允許的Cookie是有限制的,根據(jù)瀏覽器這個限制也不同。Cookie不是越多越好,它會增加寬帶,增加流量消耗,所以不要濫用Cookie;不要把Cookie當作客戶端的存儲器來用。一個域名的每個Cookie限制以4千字節(jié)(KB)鍵值對的形式存儲。
還有一種Cookie是Flash創(chuàng)建的,成為Flash Shard Object,又稱Flash Cookie,即使清空瀏覽器所有隱私數(shù)據(jù),這類頑固的Cookie還會存在硬盤上,因為它只受Flash管理,很多網(wǎng)站采用這種技術(shù)識別用戶。
Cookie跨域,主要是為了統(tǒng)一應(yīng)用平臺,實現(xiàn)單點登錄;需使用P3P協(xié)議(Platform for Privacy Preferences),通過P3P使用戶自己可以指定瀏覽器的隱私策略,達到存儲第三方Cookie的目的,只需要在響應(yīng)用戶請求時,在HTTP的頭信息中增加關(guān)于P3P的配置信息就可以了。Cookie跨域涉及兩個不同的應(yīng)用,習慣上稱為第一方和第三方。第三方通常是來自別人的廣告、或Iframe別的網(wǎng)站的URL,這些第三方網(wǎng)站可能使用的Cookie。
好,重點給大家介紹vue webpack重寫cookie路徑的方法,具體內(nèi)容如下所示:
webpack提供的反向代理服務(wù)器在開發(fā)階段非常方便,幾行簡單的代碼配置就可以使用反向代理功能,包括路徑重寫、cookie處理等。
項目開發(fā)階段使用的API路徑是 /admin ,部署到線上是 / ,所以在開發(fā)過程中需要在 proxyTable 進行反向代理配置,將路徑重寫掉,路徑重寫代碼如下( config/index.js ):
proxyTable: { '/admin': { target: 'http://127.0.0.1:8080', changeOrigin: true, pathRewrite: { '^/admin': '/admin2' }, } }
啟動項目之后進行登錄,此時API請求成功,但是獲取登錄用戶信息時發(fā)現(xiàn)cookie沒有帶過去。查看請求發(fā)現(xiàn)登錄請求的 Set-Cookie
響應(yīng)頭中的 Path 是 /admin2 。但是咱們請求的路徑是 /admin ,cookie當然不會生效。
查閱文檔發(fā)現(xiàn),proxyTable支持 onProxyRes 回調(diào)函數(shù)來自定義響應(yīng),流程是通過替換后端服務(wù)器設(shè)置的 cookie-path
來進行處理,代碼如下:
proxyTable: { '/admin': { target: 'http://127.0.0.1:8080', changeOrigin: true, pathRewrite: { '^/admin': '/lesson/admin' }, onProxyRes: function (proxyRes, req, res){ const cookies = proxyRes.headers['set-cookie'] if (cookies) { const newCookies = cookies.map(cookie=> { return cookie.replace(/Path=\/admin2/, 'Path=/') }) delete proxyRes.headers['set-cookie'] proxyRes.headers['set-cookie'] = newCookies } } }, },
重啟webpack之后重新登錄,發(fā)現(xiàn)cookie的路徑已經(jīng)被重寫到 / 了。
總結(jié)
以上所述是小編給大家介紹的vue webpack重寫cookie路徑的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Vue用v-for給循環(huán)標簽自身屬性添加屬性值的方法
這篇文章主要介紹了Vue用v-for給循環(huán)標簽自身屬性添加屬性值的方法,文中大家給大家列舉了三種方法 ,需要的朋友可以參考下2018-10-10Vue Element-ui表單校驗規(guī)則實現(xiàn)
Element-ui表單校驗規(guī)則,使得錯誤提示可以直接在form-item下面顯示,無需彈出框,感興趣的小伙伴們可以參考一下2021-07-07編寫Vue項目,如何給數(shù)組的第一位添加對象數(shù)據(jù)
這篇文章主要介紹了編寫Vue項目,如何給數(shù)組的第一位添加對象數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04Vuejs 頁面的區(qū)域化與組件封裝的實現(xiàn)
本篇文章主要介紹了Vuejs 頁面的區(qū)域化與組件封裝的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09vue-cli3自動消除console.log()的調(diào)試信息方式
這篇文章主要介紹了vue-cli3自動消除console.log()的調(diào)試信息方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Vue Router 實現(xiàn)動態(tài)路由和常見問題及解決方法
動態(tài)路由不同于常見的靜態(tài)路由,可以根據(jù)不同的「因素」而改變站點路由列表。這篇文章主要介紹了Vue Router 實現(xiàn)動態(tài)路由和常見問題解決方案,需要的朋友可以參考下2020-03-03