vue项目中前端解决跨域

vue项目中前端解决跨域

在src同级创建vue.config.js中写入一下内容

module.exports = {
  // 修改的配置
  publicPath: '/',
  lintOnSave: false,//忽略eslint语法错误
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000/',页面中需要替代的
        changeOrigin: true,//允许跨域
        ws: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

同时在页面中所有axios请求中的url中的http://localhost:3000/api替换

### Vue2 项目解决 CORS 请求的配置方法 在 Vue2 项目中,解决问题可以通过多种方式实现。以下是几种常见的解决方案,包括前端代理配置和后端 CORS 配置。 #### 1. 前端配置代理 在开发环境中,Vue CLI 提供了代理功能,可以轻松解决问题。通过配置 `vue.config.js` 文件,可以设置代理规则,将请求转发到目标服务器。 - **创建或修改 `vue.config.js` 文件** 如果项目根目录下没有 `vue.config.js` 文件,则需要手动创建。以下是配置示例: ```javascript module.exports = { devServer: { proxy: { '/api': { // 匹配以 /api 开头的请求路径 target: 'https://example.com', // 目标接口地址 changeOrigin: true, // 是否改变请求源头,默认为 true pathRewrite: { '^/api': '' }, // 可选:重写路径,去掉 /api 前缀 ws: true // 是否支持 WebSocket,默认为 false } } } }; ``` 上述配置中,所有以 `/api` 开头的请求都会被代理到 `https://example.com` 地址[^3]。 #### 2. 后端配置 CORS 虽然前端代理是开发环境下的常用方案,但在生产环境中,更推荐通过后端配置 CORS 来解决问题。以下是一些常见后端框架的配置示例: - **Spring Boot 配置** 如果后端使用 Spring Boot 框架,可以通过添加 `@CrossOrigin` 注解或全局配置来允许请求。 ```java // 全局配置 @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 允许所有路径 .allowedOrigins("http://localhost:8080") // 允许的前端.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的 HTTP 方法 .allowedHeaders("*"); // 允许的所有头部信息 } } ``` 此外,也可以在 Controller 上直接添加注解: ```java @CrossOrigin(origins = "http://localhost:8080") @RestController @RequestMapping("/api") public class ExampleController { // 接口代码 } ``` 以上配置允许来自 `http://localhost:8080` 的请求[^4]。 - **Express(Node.js)配置** 如果后端使用 Express 框架,可以通过安装 `cors` 中间件来实现支持。 ```javascript const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors({ origin: 'http://localhost:8080', // 允许的前端名 methods: ['GET', 'POST', 'PUT', 'DELETE'], // 允许的 HTTP 方法 allowedHeaders: ['Content-Type', 'Authorization'] // 允许的头部信息 })); app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` #### 3. 使用第三方库 除了前端代理和后端配置外,还可以借助第三方库(如 `axios` 的拦截器)来处理问题。例如,在发送请求时手动设置 `withCredentials` 属性。 ```javascript import axios from 'axios'; axios.get('https://example.com/api/data', { withCredentials: true // 允许携带 Cookie }).then(response => { console.log(response.data); }).catch(error => { console.error(error); }); ``` 这种方法适用于需要携带认证信息(如 Cookie 或 Token)的场景[^1]。 --- #### 注意事项 - 在开发环境中,建议优先使用前端代理功能,因为它不需要修改后端代码。 - 在生产环境中,应尽量避免使用前端代理,而选择后端配置 CORS,以确保安全性。 - 如果后端配置了拦截器(如登录验证),需要特别注意请求的处理逻辑。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值