鍍金池/ 問答/HTML/ 如何實現(xiàn)cookie的跨站點設(shè)置

如何實現(xiàn)cookie的跨站點設(shè)置

前提:在域名".myweb.com"下,有兩個站點A(a.myweb.com)和B(b.myweb.com),兩個站點之間可以進行單點登錄。單點登錄的邏輯為,當用戶訪問某個站點下的任何頁面時,會判斷當前站點下是否有會話信息的cookie,沒有則訪問Login站點(login.myweb.com),判斷Login站點中是否有會話信息的cookie,沒有則重定向到登錄頁,有則跳轉(zhuǎn)到執(zhí)行判斷前的頁面;當用戶在某個站點登錄后,會在當前站點和Login站點中存儲當前會話信息的cookie。(單點登錄的邏輯由于客觀原因現(xiàn)已無法修改)。

問題:在A站點中放一個iframe,iframe的內(nèi)容是B站點的某個頁面,但由于單點登錄中的重定向使用的是window.top,所以會導(dǎo)致整個頁面進行跳轉(zhuǎn)到B站點中,所以希望在iframe渲染B站點的頁面前,將A站點會話信息的cookie設(shè)置到B站點中,這樣便可實現(xiàn)不訪問Login站點從而觸發(fā)重定向。

我使用的是jq.cookie的插件,但實際開發(fā)中,在A站點中執(zhí)行以下代碼是不起效的。通過查閱資料,應(yīng)該由于cookie跨域設(shè)置導(dǎo)致的,請問有什么解決辦法嗎?

$.cookie('_serviceId','f850...', { domain: '.b.myweb.com',path: '/'});
回答
編輯回答
你的瞳

如果希望在myweb.com域下共享cookie,那么把domain改為.myweb.com就好了。

2017年10月25日 08:12
編輯回答
痞性

直接設(shè)置主域.xxx.com的cookie是一個辦法,另外要看你跳轉(zhuǎn)的時機,如果是服務(wù)器的重定向的話,就沒法用js做跨網(wǎng)頁了,如果是js判斷cookie的話倒是可以在跳轉(zhuǎn)之前用iframe跨子域的方法獲得cookie。

如果想要強行設(shè)置的話,A站點可以和B站點約定一個加密方式,在嵌入iframe的時候,src帶上加密過后的cookie內(nèi)容,B站點檢查到該字段就解密出來然后直接set-cookie。類似于token吧

2017年1月13日 03:18