解決方案原文
這個我試了下是谷歌瀏覽器做了限制,在edge上可以正常登錄
我遇到這種情況主要是我的項目用的是cookie存儲的登錄狀態(tài)。需要設(shè)置cookie的域名,使其在嵌入的網(wǎng)站和網(wǎng)站域名下都能訪問cookie,但是我設(shè)置了還是沒用。
我最終的解決方式
是將cookie存儲狀態(tài)改成了localStorage存儲方式。
問題描述
以iframe標(biāo)簽嵌入一個現(xiàn)有的項目到網(wǎng)站中,嵌入的項目無法正常登錄,直接在瀏覽器地址欄輸入url并登錄是正常的。
問題分析
由于后續(xù)接口提示401,判斷是登錄接口鑒權(quán)失敗導(dǎo)致的,原因是沒有顯式設(shè)置cookie的samesite屬性,導(dǎo)致被默認(rèn)為Lax,又因?yàn)轫憫?yīng)的接口屬于非頂層導(dǎo)航的跨站請求,瀏覽器將其屏蔽了!
SameSite屬性
該屬性一般是隨著Set-Cookie響應(yīng)頭設(shè)置的,語法為response.setHeader(“Set-Cookie”,“CookieName=CookieValue;SameSite=propValue”),表示該cookie是否可以攜帶
在跨站請求中,可以取三個值:文章來源:http://www.zghlxwxcb.cn/news/detail-426102.html
- Strict,表示完全禁止第三方 Cookie,跨站點(diǎn)時,任何情況下都不會發(fā)送 Cookie。
- Lax,大多數(shù)情況下不發(fā)送第三方 Cookie,但是導(dǎo)航到目標(biāo)網(wǎng)址的 Get 等請求除外
-
None,表示關(guān)閉跨站限制,但是需要顯式設(shè)置Secure屬性并配置https
如果不設(shè)置,瀏覽器會默認(rèn)為Lax
。正如上文所提到的。
解決方案文章來源地址http://www.zghlxwxcb.cn/news/detail-426102.html
- 保證兩者的網(wǎng)址一樣(域名,測試發(fā)現(xiàn)同一主域名下不同的子域名也是可以的)。
- 主動設(shè)置SameSite為Set-Cookie:Key=Value;SameSite=None;Secure,確保協(xié)議為安全協(xié)議https
- 禁用瀏覽器對SameSite的默認(rèn)配置(只會對未設(shè)置的SameSite屬性有效)
到了這里,關(guān)于踩坑vue中嵌套iframe項目,嵌套在iframe中的項目無法登錄!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!