Ajax 请求是受同源策略限制的,而 HTML 中部分标签(<script><img><iframe>)是不受同源策略限制的。所以可以利用这些标签来请求跨域数据。一般来说开发中大多使用<script>标签来进行跨域请求,因此需要进行跨域时,就使用脚本动态创建一个<script>标签,向外域服务器请求一段脚本,数据写在脚本中,就可以拿到数据。这时候就必须考虑如何处理请求的数据。直接返回var data = xxx当然可以在当前页面中添加一个全局变量,但这么做不能解决两个问题:1.污染全局空间 2.脚本是异步加载的无法进行回调。因此前端和后端会约定一个回调方法名callback,跨域返回的数据会直接作为这个方法的实参传入,即包装为callback(data)的形式,这整个模式就叫做 JSONP。
Ajax 请求是受同源策略限制的,而 HTML 中部分标签(
<script><img><iframe>)是不受同源策略限制的。所以可以利用这些标签来请求跨域数据。一般来说开发中大多使用<script>标签来进行跨域请求,因此需要进行跨域时,就使用脚本动态创建一个<script>标签,向外域服务器请求一段脚本,数据写在脚本中,就可以拿到数据。这时候就必须考虑如何处理请求的数据。直接返回var data = xxx当然可以在当前页面中添加一个全局变量,但这么做不能解决两个问题:1.污染全局空间 2.脚本是异步加载的无法进行回调。因此前端和后端会约定一个回调方法名callback,跨域返回的数据会直接作为这个方法的实参传入,即包装为callback(data)的形式,这整个模式就叫做 JSONP。第一种,转为同域;
第二种,jsonp;
第三种,设置允许跨域