vue中前端配置跨域

本文介绍了在Vue-cli3项目根目录下创建vue.config.js文件并进行配置的方法。包括基础路径、输出目录等常规配置,以及webpack的开发和生产环境配置。还给出了开发服务器的配置,重点展示了通过proxy配置解决ajax跨域问题的具体设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在整个项目根目录下创建vue.config.js,这个文件,然后写入

const path = require('path')
const debug = process.env.NODE_ENV !== 'production'

module.exports = {
    baseUrl: '/', // 根域上下文目录
    outputDir: 'dist', // 构建输出目录
    assetsDir: 'assets', // 静态资源目录 (js, css, img, fonts)
    lintOnSave: false, // 是否开启eslint保存检测,有效值:ture | false | 'error'
    runtimeCompiler: true, // 运行时版本是否需要编译
    transpileDependencies: [], // 默认babel-loader忽略mode_modules,这里可增加例外的依赖包名
    productionSourceMap: true, // 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度
    configureWebpack: config => { // webpack配置,值位对象时会合并配置,为方法时会改写配置
        if (debug) { // 开发环境配置
            config.devtool = 'cheap-module-eval-source-map'
        } else { // 生产环境配置
        }
        // Object.assign(config, { // 开发生产共同配置
        //     resolve: {
        //         alias: {
        //             '@': path.resolve(__dirname, './src'),
        //             '@c': path.resolve(__dirname, './src/components'),
        //             'vue$': 'vue/dist/vue.esm.js'
        //         }
        //     }
        // })
    },
    chainWebpack: config => { // webpack链接API,用于生成和修改webapck配置,https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md
        if (debug) {
            // 本地开发配置
        } else {
            // 生产开发配置
        }
    },
    parallel: require('os').cpus().length > 1, // 构建时开启多进程处理babel编译
    pluginOptions: { // 第三方插件配置
    },
    pwa: { // 单页插件相关配置 https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-pwa
    },
    devServer: {
        open: true,
        host: 'localhost',
        port: 8081,
        https: false,
        hotOnly: false,
        proxy: { // 配置跨域
            '/api': {
                target: 'http://localhost:5001/api/',
                ws: true,
                changOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        },
        before: app => { }
    }
}
 

### Vue3 前端解决方案 在 Vue3 项目中,解决前端问题可以通过多种方法实现。以下是两种常见的解决方案:Nginx 配置代理以及 CORS 的设置。 #### 方法一:通过 Nginx 实现接口代理 为了使前端能够访问后端 API 并规避浏览器的同源策略限制,可以借助 Nginx 来完成反向代理的功能。这种方式无需修改后端逻辑即可解决问题[^1]。 具体操作如下: - 修改 `nginx.conf` 文件,在其中定义一个新的 location 路径用于匹配需要代理的目标地址。 ```nginx server { listen 80; server_name localhost; location /api/ { proxy_pass http://backend_server_url/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { root html; index index.html index.htm; } } ``` 上述配置表示当客户端请求 `/api/*` 接口时,实际会转发到指定的后端服务 URL 上。 #### 方法二:创建 vue.config.js 进行本地开发环境下的代理 如果是在开发阶段遇到问题,则可以直接在 Vue CLI 中添加一个名为 `vue.config.js` 的文件来进行简单的 HTTP 请求重定向处理。 下面是一个典型的例子: ```javascript module.exports = { devServer: { proxy: { '/api': { // 替换为你的API路径前缀 target: 'http://your-backend-server-url', // 后端服务器的真实URL changeOrigin: true, pathRewrite: {'^/api' : ''} // 可选参数, 如果不需要保留/api则去掉这个选项或者调整正则表达式 } } } }; ``` 这样做的好处在于它只适用于开发模式下运行的应用程序,并不会影响生产环境中部署的服务行为[^2]。 #### 方法三:CORS (Cross-Origin Resource Sharing) 另一种更通用但也稍微复杂一点的办法就是让后端支持资源共享(CORS),即允许来自不同名下的资源加载和交互。这通常涉及到更改 Web 应用框架中的响应头信息以便告知浏览器哪些外部站点被授权可执行特定类型的HTTP动作。 例如对于 Express NodeJS 应用来说,只需安装 cors npm 包并应用中间件就可以轻松开启全局范围内的许可功能: ```javascript const express = require('express'); const cors = require('cors'); let app = express(); app.use(cors()); // 定义路由... ``` 以上三种方式都可以有效缓解甚至彻底消除由于违反同源安全机制而导致的各种麻烦状况;然而需要注意的是每种技术都有其适用场景,请据实际情况合理选用最合适的那一种!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值