跨域cookie


需求場景

最近做通過微信注冊我們的平台,我們的平台是微信是微服務,微信掃碼在登錄A服務,
注冊在平台B服務,因此需要將掃碼后的微信user info 從A服務傳到B服務。

目前有三個環境:

  1. 本地開發環境,服務A和服務B在同一ip的不同端口,即

    服務A: 192.168.2.165:5010

    服務B: 192.168.2.165:3002

  2. k8s環境,內網,服務A和服務B沒有共同的一級域名,是兩個不同的ip,即

    服務A: 192.168.2.192

    服務B: 192.168.2.291

  3. test和線上環境,外網,服務A和服務B有共同的一級域名,即

    服務A: b.a.com

    服務B: c.a.com

知識點

res.cookie('key', 'value', {
    maxAge: 600000,
    httpOnly: true,
    path: '/',
    domain: 'a.com',
    secure:true //設置該選項,只有https網站才可以輸出該cookie
});

  • key

    cookie的變量名,必選

  • value

    cookie變量的值,必選

  • maxAge

    cookie變量保存的時間,可選。

    可以為負數,表示此cookie只是存儲在瀏覽器內存里,只要關閉瀏覽器,此cookie就會消失。maxAge默認值為-1。

    可以為正數,表示此cookie從創建到過期所能存在的時間,以秒為單位,此cookie會存儲到客戶端電腦,以cookie文件形式保存,不論關閉瀏覽器或關閉電腦,直到時間到才會過期。

    可以為0,表示從客戶端電腦或瀏覽器內存中刪除此cookie。

  • httpOnly

    如果cookie中設置了HttpOnly屬性,那么通過js腳本將無法讀取到cookie信息,這樣能有效的防止XSS攻擊,
    竊取cookie內容,這樣就增加了cookie的安全性。這時cookie只能在服務器端獲取,前端無法獲取。

  • path

    cookie的有效范圍,是在參數domain基礎上的有效范圍。如果path設置為”/”,那就是在整個domain都有效,
    如果path設置為”/test”,那么只在domain下的/test目錄及子目錄才有效。

  • domain

    cookie有效的域名。可選,默認值為當前。domain只能設置為當前域或其父級域名。當domain不正確時,將設置cookie失敗。

    當cookie設置為一級域名a.com時,其子域b.a.com,c.a.com均有效。

  • secure

    值cookie是否僅通過安全的https,值為0或1,如果值為1,則cookie只能在https連接上有效,默認值為0,表示cookei在http和https連接上都有效。

(1)有共同一級域名的跨域cookie

對於有共同一級域名,只需在設置cookie時將domain設置成共同的一級域名即可,path設置為根目錄/。

(2)不同ip的cookie

對於不同ip的cookie在做時沒有實現cookie的共享,曲線救國了一下。

在此之前因需求,服務A跳到服務B的注冊路由(/weChatRegister)不允許直接訪問,因此對/weChatRegister路由進行了token的加密
和解密(使用的第三方庫jsonwebtoken https://github.com/auth0/node-jsonwebtoken),因此可將所需的信息通過token從服務A帶到服務B。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM