跨域:
浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
为什么会有跨域:
在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。在请求的过程中我们要想回去数据一般都是post/get请求,所以..跨域问题出现
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签(可以直接跨域发送数据并接收数据)等
跨域的方案
CORS: 服务器设置允许,浏览器要能够识别这个头
JSONP:
浏览器script的src支持跨域访问,发了一个callback去服务器
服务器接受callback 返回了一个函数的调用携带了数据回来
浏览器接收到返回值当做js解析,执行代码
兼容性强
只能get,数据量小
sliverlight
websokcet
postmessage
iframe