ajax跨域的基本流程( 三 )


function handleResponse (response) {
console.log('u r at IP address ' + response.ip + ', which is in ' + response.city + ', ' + response.region_name);
}
var script = document.createElement('script');
script.src = https://www.isolves.com/it/cxkf/yy/js/2019-07-09/'http://xxx.net/json/?callback=handleResponse';
document.body.insertBefore(script, document.body.firstChild);
这个例子通过查询地理定位服务来显示IP地址和地理位置信息 。
JSONP之所以在开发人员中极为流行 , 主要原因是它非常简单易用 。与图像Ping相比 , 它的优点在于能够直接访问响应文本 , 支持在浏览器与服务器之间双向通信 。不过 , JSONP也有两点不足 。
首先 , 安全性问题 。JSONP是从其他域中加载代码执行 。如果其他域不安全 , 很可能会在响应中夹带一些恶意代码 , 而此时除了完全放弃JSONP调用之外 , 没有办法追究 。因此在使用不是自己运维的Web服务时 , 一定得保证它安全可靠 。
其次 , 要确定JSONP请求是否失败并不容易 。
CORS和JSONP对比
JSONP只能实现GET请求 , 而CORS支持所有类型的HTTP请求 。使用CORS , 开发者可以使用普通的XMLHttpRequest发起请求和获得数据 , 比起JSONP有更好的错误处理 。SONP主要被老的浏览器支持 , 它们往往不支持CORS , 而绝大多数现代浏览器都已经支持了CORS 。




推荐阅读