Vue学习

Capacitor + Vue +Andriod Studio 解决跨域问题

PHPer 2026-05-30 2 0 0

利用Vite 代理

太好了!恭喜登录成功 🎉

## 总结一下最终解决方案

### 1. Vite 代理配置(`vite.config.js`)

```javascript

server: {

host: '0.0.0.0',

port: 5174,

proxy: {

'/api': {

target: 'http://testl13.com',

changeOrigin: true,

secure: false,

},

'/sanctum': {

target: 'http://testl13.com',

changeOrigin: true,

secure: false,

}

}

}

```

### 2. 前端请求用相对路径

```javascript

// 不设置 baseURL

// axios.defaults.baseURL = 'http://testl13.com';

// 不需要 withCredentials(Token 认证)

// axios.defaults.withCredentials = true;

const response = await axios.post('/api/login', formData.value, {

headers: {

'Accept': 'application/json',

'Content-Type': 'application/json'

}

});

```

### 3. 关键要点

| 问题 | 解决方式 |

|------|---------|

| 网页端 CORS | Laravel CORS 配置 + 清除缓存 |

| Capacitor Android CORS | Vite 代理转发,避免跨域 |

| `Http plugin not implemented` | 不用 Capacitor HTTP 插件,直接用 axios |

| WebView 崩溃 | 清除应用数据,重启模拟器 |

---

## 后续建议

### 生产环境部署

开发环境用代理,**生产环境需要改**:

1. **前端打包后**,Capacitor 的 Origin 变成 `capacitor://localhost`

2. **后端 CORS 配置**要包含:

```php

'allowed_origins' => [

'capacitor://localhost',

'http://localhost',

'http://your-production-domain.com',

],

```

3. **生产环境不用 Vite 代理**,前端直接请求后端域名:

```javascript

axios.defaults.baseURL = 'https://your-production-api.com';

```

### 封装请求工具

建议封装一个 `apiClient`,自动处理 Token:

```javascript

// utils/request.js

import axios from 'axios';

import { Preferences } from '@capacitor/preferences';

const apiClient = axios.create({

headers: {

'Accept': 'application/json', ...

立即注册
更新于:2026-05-30 17:16:06
    您需要登录后才可以评论。 立即注册
    相关内容

    yarn 安装 vue3相关问题

    Vue学习

    Capacitor + Vue 高效开发标准流程,利用Capacitor的Live Reload(实时...

    Capacitor + Vue +Andriod Studio 解决跨域问题

    vue从2到3的变化总结1

    vue框架大概要学多久(前端vue要学5天就会方法)

    带你玩转vue——开发工具的选择vscode

    VS Code——Live Server的简介、安装与使用

    fatal: unable to access ‘https://github.com/nhn/raphael.git/‘: Op...

    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: e...

    git提交或克隆报错fatal: unable to access ‘https://github.com/tata20191...

    Docker Desktop requires Windows 10 Pro/Enterprise/Home (18363+)

    vue-router.esm.js?8c4f:2065 Uncaught (in promise) NavigationDuplicate...

    express + vue +mysql 搭建项目

    Vue + NodeJS + MySQL 搭建文章后台管理系统

    vue中在.vue文件中定义全局变量 全局函数及使用

    Identifier * is not in camel case - 代码规范性问题

    实战案例丨Vscode开发第一个Vue+Element Plus示例

    学习JS,TS,Vue等等语言做一个信息分享的小平台

    什么是 JWT -- JSON WEB TOKEN

    vue中 router.beforeEach() 的用法

    <router-view v-if=“isRouterAlive“> 刷新当前页面 - Vue2

    createError.js?2d83:16 Uncaught (in promise) Error: Request failed wi...

    vue axios跨域 Request Method: OPTIONS问题

    Vue报错 Errors compiling template: ****** : Interpolation inside attr...

    图片上传402 (Payment Required) 看具体js是这行xhr.send(formData); 报错

    这个符号`是怎么打出来的

    this.$router.push跳转时页面不刷新的问题

    vue 刷新当前页面或者跳转页面时候刷新

    vue项目如何刷新当前页面

    让 vue项目在Linux后台持久运行 npm run dev

    vue+element-ui表格列元素添加链接

    sockjs-node/info?t= net::ERR_CONNECTION_TIMED_OUT

    js快速将字符串数组转化为数字数组(互换)

    Vue中checkbox的v-model初值设置为数组才对

    vue element 中使用a标签报错的问题

    Vue 中使用 router-link 后,URL 变化但是页面不刷新,Vue获取后台传过来的值

    vue:报错“Extra semicolon“解决

    vue中的各种报错整理

    vscode 运行 vue localhost 拒绝了我们的连接请求。使用visual Studio Code...

    推荐内容

    真枪实弹,假戏真做,12部具有“实干精神”的电影!

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    BT磁力搜索网站汇总和找不到的资源

    什么是磁力链接,您如何使用?

    Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作