localStorage 跨域訪問

admin發表於2019-02-24

如果兩個頁面的主域名相同,那麼只要進行如下設定即可實現跨域訪問LocalStorage:

[JavaScript] 純文字檢視 複製程式碼
document.domain = 'softwhy.com';

將document.domain屬性值設定為根域名。

關於document.domain參閱JavaScript 跨域訪問cookie一章節。

域名完全不相同的話,可以通過window.postMessage(),讀寫其他視窗的LocalStorage。

a.com下頁面通過iframe插入了b.com下的一個頁面,a.com下頁面程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var iframeWin = document.getElementsByTagName('iframe')[0].contentWindow;
var obj = {
  webName: "螞蟻部落"
};
iframeWin.postMessage(JSON.stringify({
  key: "storage",
  data: obj
}), "http://b.com");

以上程式碼可以向b.com域下的頁面傳送資料。

[JavaScript] 純文字檢視 複製程式碼
window.onmessage = function(event) {
  if (event.origin !== 'http://b.com') {
    return;
  }
  var payload = JSON.parse(event.data);
  localStorage.setItem(payload.key, JSON.stringify(payload.data));
};

以上程式碼可以接收http://a.com域下頁面傳送的資料。

關於postMessage()方法和message事件可以參閱一下兩篇文章:

(1).postMessage()參閱JavaScript postMessage() 方法一章節。

(2).message可以參閱JavaScript message 事件一章節。

相關文章