JavaScript原生实现JSONP跨域
同源策略:浏览器为了保证请求之间的安全性,提出了同源策略,即协议、域名、端口都相同时才满足同源策略。
如果两个网页是不同源的就会出现跨域现象。JSOPN是出现最早的跨域方法,其特点是简单、兼容性不错,缺点是只支持get方法、不安全、不能很好的处理发现和处理错误。
function jsonp(url, param, callback){ //处理url地址,没有加入一个?,有加入& let queryString = url.indexOf('?') == -1 ? '?' : '&' //处理参数{xx:xx} for(let k in param){ queryString += k + '=' + param[k] + '&' } //处理回调 let random = Math.random().toString().replace('.', '') let callname = 'myjsonp' + random let cb = 'callback=' + callname queryString += cb //创建一个script标签,并加入src属性 let script = document.createElement('script') script.src = url + queryString //把回调函数的名字赋给window window[callname] = funciton(param){ callback(param) document.body.removeChild(script) } docuemnt.body.appendChild(script) }

浙公网安备 33010602011771号