由于在同一个浏览器窗口中可以同时打开多个网站的页面,并且它们都处于同一个会话中,若是不由止跨域访问则会形成用户隐私数据泄露和登陆身份冒用的问题,因此浏览器会使用同源策略限制跨域访问。跨域
在浏览器中,经过JS代码访问不一样域名下的URL或者iframe时,会被禁止访问。而不是经过JS代码进行的跨域访问不存在跨域问题!好比跨域加载图片,引用JS文件,下载各类文件,使用iframe跨域嵌入其余网站的页面都是能够的。浏览器
跨域访问被禁止有时会给应用开发带来阻碍,但在符合特定条件时也有相应的方法在保证安全的状况下可以解决跨域访问问题:安全
1 在对方服务器的响应头中添加Access-Control-Allow-Origin容许哪些域进行跨域访问,它的指能够是域名或者*。(这种方案只有在对方信任、不在意、安全的状况下才能使用。)服务器
2 若是域名都是同一个根域名的子域名,则可使用document.domain="根域名"来统一JS执行环境的域名。(这种方案只能在同一个公司和组织的内部使用)dom
3 使用JSONP(JSON Padding)。浏览器不限制经过script标签引入其余网站的脚本,因此能够经过JS向页面动态添加一个script标签并指定其src为一个特殊的url,对方的服务器针对这个url的请求,会进行特殊的处理。网站
4 将要请求的URL发送给本身的服务端,让服务端发起请求(服务端没有跨域限制),服务端请求成功后,将数据再传给浏览中的JS(这种方式叫作服务端代理请求,这种方式只要本身的服务端支持一下就ok了,是比较经常使用的方案,没有任何限制)。url
5 使用任何能够利用的浏览器端中间机制实现跨域交换数据。代理