前端 Vue 对接 UNet 后端:跨域 CORS 配置方案
1. 教程目标与背景
在开发前端项目时,常需调用基于 UNet 人像卡通化模型的后端服务。此类服务通常基于 Gradio 框架搭建,默认监听在 localhost:7860 端口。而 Vue 项目通常运行在 localhost:8080 或 3000 端口上,导致浏览器直接报错:
Access to fetch at 'http://localhost:7860/predict' from origin 'http://localhost:8080' has been blocked by CORS policy.
本教程将介绍如何让 Vue 前端顺利调用 UNet 后端 API,完成图片上传、卡通化处理及结果获取的完整流程。
2. 理解当前服务架构
2.1 后端服务现状
人像卡通化系统基于 Gradio 框架启动,默认监听地址为:
http://localhost:7860
它提供图形界面并暴露底层 API 接口(如 /predict),允许外部程序通过 HTTP 请求提交图片并获取处理结果。由于不同端口且后端未启用 CORS 支持,浏览器会拦截跨域请求。
2.2 前端期望的工作流
交互逻辑如下:
Vue 前端 (http://localhost:8080) -> 上传图片 -> 调用后端 API (http://localhost:7860/predict) -> 返回 base64 或文件路径 -> 显示卡通化结果 + 提供下载
关键在于打通跨域限制。
3. 解决方案选择:三种常见方式对比
| 方式 | 是否推荐 | 说明 |
|---|---|---|
| 开发服务器代理(vue.config.js) | ✅ 推荐新手 | 利用 Vue CLI 内置代理转发请求 |
| 修改后端启用 CORS | ✅ 推荐生产环境 | 直接在 Python 服务中开启跨域支持 |
| 使用 Nginx 反向代理 | ⚠️ 进阶可用 | 更稳定,适合部署上线 |
4. 方法一:Vue 开发服务器代理(适合本地调试)
若使用 Vue CLI 创建的项目,可通过修改 vue.config.js 设置代理。
4.1 创建 vue.config.js
在项目根目录下创建文件:
// vue.config.js
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:7860',
: ,
: {
:
}
}
}
}
}

