Jsonp

jsonp 是曾经用于解决跨域问题的一种方案。原理是 script 标签支持发起跨域请求。由于效率过低, 现在几乎不再使用。目前常用的解决跨越的方法有:

  • 后端服务配置 Access-Control-Allow-Origin 请求头
  • 服务器转发代理
JavaScript
// 创建一个 script 标签
var newScript = document.createElement('script')

// 设置标签的 src
// 其中的 callback 参数让服务器指定回调函数
newScript.src = 'https://www.example.com?callback=fn'


// 向 body 添加 script 标签,请求立即发起
// 服务器返回的数据可能是这样的:fn("this is server side data")
document.body.appendChild(newScript)

// 回调函数fn,当 script 完全加载后执行,获取数据作为参数
function fn(data) {
    console.log(data)
    // 移除该脚本
    newScript.parentNode.removeChild(newScript)
}