同源
    两个页面具有相同的协议(http / https)、域名、端口
    跨域
    一个网页去请求另一个网页数据(只要协议、域名、端口号有一个不同,就是跨域)

    跨域常用的两种方法

    1、CROS

    1. //需要在服务端添加
    2. response.setHeader('Access-Control-Allow-Origin','http://foo.example')

    2、JSONP
    JSONP 是 JSON Padding
    JSONP实现跨域通过创建动态script标签,利用script标签的src不受同源策略约束来获取数据 实现跨域
    优点:兼容IE 可以跨域
    缺点:由于是script标签,无法读取状态码、不支持POST

    实现JSONP跨域的方法:
    1、声明一个全局函数
    2、动态创建一个script标签
    3、给标签的src进行赋值
    4、然后进行函数回调
    5、将标签插入页面上
    6、加载完后 删除

    1. //服务端
    2. // request.headers['referer'].indexOf('http://foo.example') === 0 请求referer验证
    3. const string = fs.readFileSync('...js').toString()
    4. const data = fs.readFileSync('...json').toString()
    5. const string2 = string.replace('{{data}}', data)
    6. response.write(string2)
    7. //请求端
    8. const script = document.createElement('script')
    9. script.src = `http://foo.example`
    10. script.onload = () =>{
    11. script.remove()
    12. }
    13. document.body.appendChild(script)