項目中出現多個域名下的Cookie


  前言:我們在查看一個項目的Cookie時,有時會看到多個域名下的Cookie,如下圖:

  

  

  其中一種常見的原因是:因為我們在項目中引用了另一個項目的資源。如下圖:

  

 

   重點:瀏覽器的一種默認機制:如果我們引用了另一個項目的資源,那么該項目域下的Cookie對本項目可見;但是雖然可見,但依然,不可跨域訪問和設置Cookie。

 

  那么我們如何去模仿一下這個效果呢? 

  實驗方案一:根據默認機制,我們需要2個項目,A和B,在A里建一個可以創建A對應域名:a.com的Cookie的JS:test.js,在B項目里添加A項目的資源:

  1-項目A-test.js:

alert(1);
$(function () {
    alert(2);
    $.cookie('the12345555', 'value123', { expires: 7, domain: 'a.com', path: '/' });
});

  2-項目B-common.js添加A項目資源:

var script = document.createElement('script');
script.src = "https://mstyle1.tbdress.com/script/usercenter/test.js";
script.type = "text/javascript";
script.async = true;
document.head.appendChild(script);

 

  最后訪問B項目測試效果:我們可能會遇到瀏覽器的提示:blocked devtools   或者   request may be blocked    請參考解決訪問:https://community.akamai.com/customers/s/article/Blocking-Requests-Other-Hidden-Chrome-Developer-Tools?language=en_US

  也可以在谷歌瀏覽器打開開發者工具F12,在按F1打開設置頁面如下,大家試試效果吧:

  

 

  測試結果:有彈框,但是cookie設置失敗!  但是我們看到了a項目下的cookie,只是沒有添加新的cookie成功。   這是因為新的cookie創建的方式是靠B引用A,在B里執行了域名在A下的Cookie,屬於跨域設置Cookie,最后的結果必然就失敗了。

  

  根據上面失敗的原因改進實驗:

  實驗方案二:我們需要2個項目,A和B,在A里建一個可以創建A對應域名:a.com的Cookie的JS:test.js,在A項目里引用test.js(讓創建方法執行在A項目中),在B項目里添加A項目的資源test.js,其實可以是任一資源,不一定在引用test.js,即使引用了,也會跨域設置失敗,真正成功的還是靠A項目自己執行的效果。   思路就是這樣了,大家自己測試哈。

 

  實驗方案三:我們需要2個項目,A和B,  B隨便引用A的一資源,同時B發起一個異步請求到A中,讓A在程序中創建A的Cookie,由於B引用了A的資源,那么A自己創建的Cookie對B可見。      自己實現哈。


免責聲明!

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



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