跨域名共享登錄狀態(tài)問題

鑒權(quán)方式

1 cookie

cookie 是服務(wù)器發(fā)送到用戶瀏覽器并保存在本地的一小塊數(shù)據(jù),它會在瀏覽器下次向同一服務(wù)器再發(fā)起請求時被攜帶并發(fā)送到服務(wù)器上。

服務(wù)端通過響應(yīng)頭set-cookie將session信息放入瀏覽器cookie

客戶端在請求中將cookie信息放入請求頭

2 jwt (JSON Web Token)

服務(wù)端生成token, 通過接口等發(fā)送給客戶端

客戶端將token存在本地(如localStorage),然后在請求時通過請求頭帶入

限制

1 cookie HttpOnly

無法通過js腳本讀寫cookie

2 Chrome 80 版本后的安全策略

Chrome 80.0中將SameSite的默認(rèn)值設(shè)為Lax,對現(xiàn)有的Cookie使用有什么影響?

如果 SameSite 值是 Lax, 那么在發(fā)送同站請求的時候會帶上 Cookie。

3 cookie、localStorage、seesionStorage 等的跨域限制

解決

1 針對httponly

無解

2 針對Chrome Cookie策略

手動修改setcookie信息,samesite設(shè)置為none

3 針對storage的跨域限制

在工作項目中我使用了利用iframe postMessage傳遞localStorage。
登錄站點

                    const iframe = document.createElement('iframe');
                    iframe.src = 'https://xxx.yyy.com';
                    iframe.style.display='none';
                    document.body.append(iframe);
                    // 使用postMessage()方法將token傳遞給iframe
                    setTimeout(() => {
                        // eslint-disable-next-line no-console
                        console.log('posted');
                        iframe.contentWindow.postMessage(
                           token,
                            'https://xxx.yyy.com',
                        );
                    }, 4000);
                    setTimeout(() => {
                        iframe.remove();
                    }, 6000);

被傳值站點

          window.addEventListener('message', e => {
            if (e.source != window.parent) { return; }
            console.log(e.data);
            localStorage.setItem('task', e.data);
        }, false);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 想要成為一名合格的前端工程師,掌握相關(guān)瀏覽器的工作原理是必備的,這樣子才會有一個完整知識體系,要是「能參透瀏...
    不行了快攔住我閱讀 1,735評論 0 2
  • 此學(xué)習(xí)記錄來自于極客時間專欄瀏覽器工作原理與實踐,由于個人對這塊內(nèi)容比較感興趣,所以花錢買了專欄,但看完總覺得什么...
    Mstian閱讀 1,044評論 0 3
  • 前言開門見山,這篇文章,適合 「 初級前端 」 ,如果你還在校招的話,或者還在求職的話,可以看看本文,找一找靈感,...
    WEB前端含光閱讀 1,397評論 1 2
  • 在做項目的過程中,經(jīng)常需要把數(shù)據(jù)存儲在本地,便于提高用戶的體驗效果等,如權(quán)限驗證的token、用戶信息、數(shù)據(jù)埋點、...
    DoNow閱讀 487評論 0 1
  • 夜鶯2517閱讀 128,087評論 1 9

友情鏈接更多精彩內(nèi)容