axios怎么配置jsonp
时间: 2023-07-21 18:25:06 浏览: 90
axios-add-jsonp:向axios添加jsonp方法
axios默认是不支持jsonp的,但可以通过自定义适配器来实现jsonp请求。下面是一个简单的jsonp适配器实现示例:
```javascript
import originJSONP from 'jsonp'
function jsonp(url, data, options) {
url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
return new Promise((resolve, reject) => {
originJSONP(url, options, (err, data) => {
if (!err) {
resolve(data)
} else {
reject(err)
}
})
})
}
function param(data) {
let url = ''
for (var k in data) {
let value = data[k] !== undefined ? data[k] : ''
url += `&${k}=${encodeURIComponent(value)}`
}
return url ? url.substring(1) : ''
}
// 使用自定义适配器
axios.defaults.adapter = function (config) {
return jsonp(config.url, config.params, {
param: config.callbackName
})
}
```
在这个例子中,我们通过引入jsonp库,然后定义了一个jsonp函数来处理jsonp请求。在自定义适配器中,我们将Axios的请求配置转换为jsonp函数的参数,然后返回一个Promise对象,通过jsonp函数向服务器发起请求。
注意,这种方式需要服务端返回符合jsonp格式的数据,即一个函数调用,比如 `callbackName({data: 'test'})`,其中callbackName是自定义的回调函数名,可以通过Axios的params参数传递给服务端。另外,由于jsonp请求是通过script标签实现的,因此只能是GET请求。
阅读全文