1. 本接口采用的是聚合数据接口:https://www.juhe.cn/docs/api/id/43
2. 首先,注册账号申请快递单号接口:获取申请的key
3. 接口所需参数查看(主要是这三个需要传到服务端)https://www.juhe.cn/docs/api/id/43
4. 实现代码(经测试直接访问获取不到数据,因为服务端没有主动设置开放CROS资源共享)
4.1. 使用原生ajax请求(经测试直接访问获取不到数据,因为服务端没有主动设置开放CROS资源共享)浏览器会默认同源策略,所以访问失败。
<script>
function fn(obj){
console.log(obj);
}
//商户key
var key = "870967b6f718e99ceda764f1829c1763";
//快递单号
var kdNumber = "3383748328872";
//快递物流公司简称
var com = "sto";
var xhr = new XMLHttpRequest();
xhr.open('get','http://v.juhe.cn/exp/index?key='+key+'&com='+com+'&no='+kdNumber);
xhr.send();
xhr.onload = function(){
xhr.responseText;
};
</script>
4.2 使用跨域访问请求,传参数 callback 设置一个自定义的fn函数(进行测试可以访问拿到数据)
<script>
function fn(obj){
console.log(obj);
}
//商户key
var key = "870967b6f718e99ceda764f1829c1763";
//快递单号
var kdNumber = "3383748328872";
//快递物流公司简称
var com = "sto";
var script = document.createElement('script');
script.src = 'http://v.juhe.cn/exp/index?key='+key+'&com='+com+'&no='+kdNumber+'&callback=fn';
document.head.appendChild(script);
</script>
- 一般接口数据不是特别重要的接口服务端都会开发CROS,可以直接通过ajax不跨域直接获取服务端的返回数据。
- 如果服务端没有设置CROS,ajax不同源就不能获取到数据,此时就可以采用接口的callback参数用跨域解决获取服务端的返回数据。
- 如果两种都不能获取,可以采用本地服务器直接访问接口服务器,不经过浏览器,就不会存在浏览器拦截跨域请求问题,把拿到的数据在返回给浏览器就可以实现(原理类型翻墙v*n)。
5. 查看聚合数据支持的哪些快递公司的查询:https://www.juhe.cn/box/index/id/43(部分参考)