91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何跨域獲取Cookie分析

發布時間:2021-11-17 17:04:26 來源:億速云 閱讀:397 作者:柒染 欄目:web開發

如何跨域獲取Cookie分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

最近在發現使用Taobao的時候的一個小細節,于是便萌發起了寫這篇文章。

當我們在 www.taobao.com 中進行登錄之后,然后直接切換到 www.tmall.com 域名下,發現www.tmall.com首頁的最頂部馬上顯示成了”您好, andyfaces“,于是便對此處的實現機制進行分析。

首先,用戶名應該是存儲在cookie中的,于是在taobao.com的域名中用 firefox看到用戶名確實是存儲在 cookie, 而tmall.com中沒有存儲該cookie:

如何跨域獲取Cookie分析

可以確定的是對于cookie來說肯定是不允許垮域訪問的。無論是通過JS還是Server端程序來說都是如此,那么tmall.com是如何訪問到taobao.com下的cookie的呢?

于是打開 tmall.com,然后使用firebug來進行調試,發現了一條這樣的請求語句

如何跨域獲取Cookie分析

其頁面的JS代碼為:

<script>            KISSY.getScript("http://www.taobao.com/go/app/tmall/login-api.php?"+Math.random())            </script>

看到這里之后于是也大概知道他如何處理了的,為了確認一下,于是搜索一下 KISSY.getScript 函數代碼,確實采用了JS跨域的 JSONP 解決方案:

getScript: function(url, success, charset) {                var isCSS = RE_CSS.test(url),                    node = doc.createElement(isCSS ? 'link' : 'script'),                    config = success, error, timeout, timer;                        node.src = url;                    node.async = true;                    scriptOnload(node, function() {                        if (timer) {                            timer.cancel();                            timer = undef;                        }                            S.isFunction(success) && success.call(node);                            // remove script                        if (head && node.parentNode) {                            head.removeChild(node);                        }                    });                head.insertBefore(node, head.firstChild);          }

其原理是通過動態create js include 動態加載js,然后為該script節點bind onload事件或判斷onreadystatechange,其具體細節可以參考以上 scriptOnload 的函數的處理。 當js加載完成之后 采用回調方式來執行 success 函數。

為了進一步確實,于是使用 Jquery的 $.getScript 來測試一把,首先在 taobao.com下進行登錄成功,然后隨便在本地寫了一個測試頁,通過以下語句:

$.getScript('http://www.taobao.com/go/app/tmall/login-api.php?0.6783450077710154', function(){        console.log("the taobao.com cookie object:" + userCookie + " username:" + userCookie._nk_);    });

Firbug結果:

如何跨域獲取Cookie分析

其實大致原理如此,通過在www.taobao.com 的server端提供一個獲取當前域下所有cookie的 php的請求地址,然后該php獲取到cookie之后將期并成 js 代碼,也就是以上第二個截圖所看到的。然后再在 tmall 采用 jsonp 的方式跨域加載該 js 代碼,從而實現 cookie 的跨域訪問。

關于如何跨域獲取Cookie分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浪卡子县| 汕头市| 准格尔旗| 西丰县| 当雄县| 普宁市| 康保县| 古田县| 班戈县| 凭祥市| 永福县| 涪陵区| 拉萨市| 海南省| 社旗县| 巢湖市| 定兴县| 甘洛县| 凤阳县| 富宁县| 六安市| 靖西县| 积石山| 衢州市| 阿克苏市| 兰溪市| 获嘉县| 渝中区| 集贤县| 滨州市| 阿瓦提县| 合作市| 元江| 庄浪县| 楚雄市| 增城市| 闸北区| 台中县| 全州县| 余干县| 务川|