uniapp h5请求跨域
时间: 2025-02-21 19:50:04 浏览: 48
### 解决 UniApp H5 环境下的跨域请求
#### 配置 `vue.config.js` 文件
为了使开发环境中的跨域问题得到解决,在项目的根目录下创建或编辑 `vue.config.js` 文件,加入代理配置:
```javascript
module.exports = {
devServer: {
disableHostCheck: true,
proxy: {
"/api": {
target: "http://example.com", // 替换成实际的目标API地址
changeOrigin: true,
secure: false,
ws: false,
pathRewrite: {
"^/api": "",
},
},
},
},
};
```
此段代码通过设置 Webpack Dev Server 的代理功能来绕过浏览器的安全策略[^3]。
#### 修改 `manifest.json`
对于生产环境中发布的 H5 应用来说,还需要调整 `manifest.json` 中的相关配置项以适应不同的部署场景:
```json
{
...
"h5": {
"devServer": {
"port": 8080,
"disableHostCheck": true,
"proxy": {
"/api": {
"target": "http://localhost:8081",
"changeOrigin": true,
"secure": false,
"pathRewrite": {"^/api":""}
}
}
}
}
}
```
上述 JSON 片段展示了如何针对 H5 平台指定特定的代理规则,从而确保即使是在正式上线之后也能正常访问远程服务接口[^5]。
#### 封装统一的请求工具类
考虑到不同平台间可能存在差异化的网络通信需求,建议编写一个通用型的 HTTP 请求模块 `request.js` 来处理这些细节:
```javascript
const baseURL = process.env.NODE_ENV === 'development' ? '/api' : 'https://your-production-api-domain';
export default function request(url, options) {
const fullUrl = `${baseURL}${url}`;
return new Promise((resolve, reject) => {
uni.request({
url: fullUrl,
...options,
success(res) {
resolve(res.data);
},
fail(err) {
reject(err);
}
});
});
}
```
这段 JavaScript 实现了一个简单的 Axios 类似的功能,它能够根据当前所处环境自动切换基础 URL,并且提供了简洁易懂的方法签名以便于调用者使用。
阅读全文
相关推荐

















