## 同源策略
协议 域名 端口 3个都一致叫同域,有1个不一致叫跨域
## 为什么浏览器不支持跨域
cookie LocalStorage
DOM元素也有同源策略 iframe
ajax 也不支持跨域
## 实现跨域
- jsonp
- cors
- postMessage
- document.domain 子域和父域
- window.name
- location.hash
- http-proxy 反向代理
- nginx
- websocket
jsonp方式:
function jsonp({url, params, cb}) { return new Promise((resolve, reject) => { const script = document.createElement(‘script‘) window[cb] = (data) => { resolve(data) document.body.removeChild(script) } params = {...params, cb} // wd=b&cb=show let arrs = [] for (let key in params) { arrs.push(`${key}=${params[key]}`) } script.src = `${url}?${arrs.join(‘&‘)}` document.body.appendChild(script) }) } // 缺点:只能发送get请求 // 不安全 xss攻击 不采用 jsonp({ url: ‘https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su‘, params: {wd: ‘b‘}, cb: ‘show‘ }).then(data => { console.log(data) })
原文地址:https://www.cnblogs.com/zouxinping/p/10339450.html
时间: 2024-10-11 03:33:09