什么是同源
源 = 协议+域名+端口号
如果有两个url:
协议、域名、端口号 ——完全一致,那么这两个url就是同源的
什么是跨域
从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。
JSONP跨域
JSONP我们在跨域的时候由于当前浏览器(一遍是IE)不支持cors ,我们必须使用另外一种方式跨域
于是我们请求一个js文件,这个js文件会执行一个回调,回调里面就有我们的数据,回调的名字可以随机生成,以callback当参数传给后台,后台会把这个函数再次返回给我们并执行
优点: 最大的优点是兼容ie,跨域
缺点: 由于他是script标签,所以读不到ajax那么精确的状态码,也不知道响应头这些,只能用onload、onerror监听是成功了还是失败了。
由于是script标签,只能发get请求,不支持post
CORS跨域
浏览器默认不同源之间不能互相访问数据,
如果你就是要就是想要两个网站互相访问。
那就是CORS
只需要在被访问的资源,在响应头中写入你要允许的网站
Access-Control-Allow-Origin: foo.example
一句话完美解决
缺点就是不兼容ie,所以ie要用JSONP