export default {
mounted () {
window.addEventListener('message', (e) => {
// 這裡一定要對來源做校驗
if (e.origin === 'http://localhost:9099') {
// http://localhost:9099發來的信息
console.log(e.data)
// e.source可以是回信的對象,其實就是http://localhost:9099窗口對象(window)的引用
// e.origin可以作為targetOrigin
e.source.postMessage(`我是[http://crossdomain.com:9099],我知道了兄弟,這就是你想知道的結果:${document.getElementById('app') ? '有id為app的Dom' : '沒有id為app的Dom'}`, e.origin);
}
})
}
}
結果可以看到:
2.document.domain
這種方式只適合主域名相同,但子域名不同的iframe跨域。
比如主域名是http://crossdomain.com:9099,子域名是http://child.crossdomain.com:9099,這種情況下給兩個頁面指定一下document.domain即document.domain = crossdomain.com就可以訪問各自的window對象了。
3.canvas操作圖片的跨域問題
這個應該是一個比較冷門的跨域問題,我就不再班門弄斧了,主要解決canvas圖片getImageData,toDataURL跨域問題。
最後,希望看完這篇文章之後,再有人問跨域的問題,你可以嘴角微微上揚,冷笑一聲:“不要再問我跨域的問題了。”
閱讀更多 溫暖如初歲月如故i 的文章