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

鑒權(quán)方式

1 cookie

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

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

客戶端在請(qǐng)求中將cookie信息放入請(qǐng)求頭

2 jwt (JSON Web Token)

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

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

限制

1 cookie HttpOnly

無法通過js腳本讀寫cookie

2 Chrome 80 版本后的安全策略

Chrome 80.0中將SameSite的默認(rèn)值設(shè)為L(zhǎng)ax,對(duì)現(xiàn)有的Cookie使用有什么影響?

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

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

解決

1 針對(duì)httponly

無解

2 針對(duì)Chrome Cookie策略

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

3 針對(duì)storage的跨域限制

在工作項(xiàng)目中我使用了利用iframe postMessage傳遞localStorage。
登錄站點(diǎn)

                    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);

被傳值站點(diǎn)

          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)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

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