1、jsonp:通过script,这里不详细说了
2、hash:就是url#号后面的东西,hash的改变不会刷新页面(search就URL?号后面的东西,search的改变会刷新页面,不可以用来跨域通信)例子如下:
A页面通过iframe或frame嵌入了跨域的页面B
//A页面
var b = document.getElementsByClassName('left')
b.src = b.src + '#data'
//B页面
window.onhashchange = function (ev) {
var hash = window.location.hash;
}
3、postMessage
窗口A(http://w.com)像跨域的窗口B(http://b.com)发送信息
//A页面
window.postMessage('data', 'http://b.com')
//B页面
window.addEventListener('message', function (ev) {
console.log(ev.origin) //http://w.com
console.log(ev.source) //Awindow
console.log(ev.data)//data
})
4、websocket
var sc = new WebSocket('wss://echo.websocket.org')
sc.open = function (ev) {
ws.send('hello ws')
}
sc.message = function (ev) {
console.log(ev.data)
}
sc.close = function (code) {
console.log('connect closed')
}
5、cors:就是浏览器会拦截ajax请求,如果发现发送了跨域请求,就会在http请求头中加一个origin