uniapp 中uni.request请求一下触发两次以及预检请求解决办法
时间: 2023-08-09 07:09:44 浏览: 591
在vue中使用axios作交互时,为什么会调用两次接口
5星 · 资源好评率100%
如果 `uni.request` 请求触发了两次,通常是因为浏览器发起了一个预检请求(`OPTIONS` 请求)。这是因为跨域请求时,浏览器会先发送一个预检请求,以确定实际请求是否安全。如果服务器没有正确处理预检请求,就会导致实际请求被拒绝。
解决办法如下:
1. 在服务器端配置支持跨域请求。具体方法可以参考跨域资源共享(CORS)协议的相关文档。
2. 在 `uni.request` 中设置 `header` 头,启用 CORS:
```javascript
uni.request({
url: 'http://example.com/api',
method: 'GET',
header: {
'Access-Control-Allow-Origin': '*'
},
success: function(res) {
console.log(res.data);
}
});
```
其中,`Access-Control-Allow-Origin: *` 表示允许来自任何域的请求。
注意:CORS 只对真正的跨域请求有效,如果是同域请求,不需要设置 `Access-Control-Allow-Origin` 头。
阅读全文