鍍金池/ 問答/C  HTML/ 父頁(yè)面的cookies可以讓iframe的頁(yè)面讀取到嗎?

父頁(yè)面的cookies可以讓iframe的頁(yè)面讀取到嗎?

a頁(yè)面與b頁(yè)面是同源的不涉及跨域,a頁(yè)面iframe了b頁(yè)面,a頁(yè)面登錄后有了cookies,這個(gè)時(shí)候b頁(yè)面可以訪問到a頁(yè)面的cookies嗎?請(qǐng)問怎樣做可以讓a頁(yè)面的cookies傳到b頁(yè)面的cookies里面?

回答
編輯回答
命多硬

不果不跨域, cookie是同步寫的, 無論是iframe, 還是不同的window或者tab, 任何一個(gè)頁(yè)面修改了cookie, 其它頁(yè)面就可以通過document.cookie拿到, 但是沒法監(jiān)聽cookie的改變. 需要注意兩點(diǎn): 一是如果指定了path, 則不同path的頁(yè)面拿不到, 二是如果設(shè)置了httpOnly, 則js無法讀取.

另外:

  • 如果要在iframe之間通信, 可以考慮使用postMessage.
  • 如果要跨頁(yè)面監(jiān)聽數(shù)據(jù)變化, 可以考慮使用localStorage或者sessionStorage, 然后在window上監(jiān)聽storage事件.
2018年3月14日 00:00
編輯回答
維她命

你問能不能,那我只能說:能(不跨域)。
你要問為什么?自己看 cookies 原理。

cookie 是儲(chǔ)存在用戶本地終端上的數(shù)據(jù)。

用js來解釋說呢,就是一個(gè)全局變量,你的a頁(yè)面和b頁(yè)面就是分別的兩個(gè)函數(shù)。

var cookie = '';
function a(v){
    cookie = v;
}
function b(v){
    cookie = v;
}

這么說你應(yīng)該可以更容易理解了吧

2017年4月8日 18:27
編輯回答
故林

同域下應(yīng)該是可以的

2017年9月23日 18:47