ajax进行请求的时候,是有一个url的,并不是能够请求任何地址的文件,是有跨域限制的。
同源策略
同源是指:域名,协议,端口 均相同
跨域是指从一个域名的网页去请求另一个域名的资源,严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当作是跨域。
如何解决跨域
- 跨域资源共享(CORS)
- 使用JSONP(常用)
- 修改document.domain
- 使用window.name
JSONP
JSONP是JSON with Padding(填充式json)的简写,是应用JSON的一种新方法,也是一种跨域解决方案。
JSONP由两部分组成:
回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据。
原理:
直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的
跨域封装
标签是能够访问到其他域名下的文件的:
<img src="https://www.todesk.com/imgs/images/logo.png" >