vue中使用axios反向代理解决跨域问题

## axios

axios是一个轻量级的http请求库 本质上是原生xhr的封装,使用的promise封装符合最新的ES规范

特点:

1. 从浏览器中创建xmlhttprequest

2. 支持promise api

3. 提供了一些并发请求的接口,方便操作

4. 从nodejs中创建http请求

5. 可以拦截请求和响应

6. 转换请求和响应数据

7. 自动转化为json文件

使用方法:

1. 执行 npm i axios

2. 在哪儿使用就在那儿引入使用。import axios from 'axios'

3.axios请求方法:axios.get和axios.post

## 使用axios时需要使用反向代理解决跨域问题

在vue项目开发阶段,常常会碰到跨域请求的问题,我们能使用反向代理解决

解决方法:

1. 在项目文件夹下创建 vue.config.js配置文件(修改vue配置文件后必须重启服务)

其中写:

module.exports={
    devServer:{
        proxy:{
            "/api":{//"/api"自定义的请求路径地址
                target:"请求地址",
                changeOrigin:true,//是否进行跨域 ture是  false不是
                pathRewrite:{//路径重写
                "^/api":"/"
                }
            }
        }
    }
}

2. 将 axios.get/post("请求地址路径)的请求地址路径改为自定义的/api

       以上就是使用axios进行反向代理解决跨域的方法。但这里会有一个很麻烦的点,就是每次使用就需要在相应页面引入axios并且代理路径前都需要写/api,很不方便,后期项目上线时该api路径也得一个一个改,改起来很头疼。

这里我就给大家写一种简便的方法可以方便后期维护及修改api:

在min.js文件中添加以下代码:

   // 引入axios
   import axios from "axios"
   // 给vue原型添加一个属性$axios 其属性值为axios
   Vue.prototype.$axios = axios;
   // 给axios设置一个默认请求地址 这样请求数据时/api可以省略不写 方便后期优化
   axios.defaults.baseURL = "/api";

 使用axios调取数据的时候直接 按如下代码就可以了,无需再引入axios

 this.$axios('请求路径,可省略/api').then(res=>{

                console.log(res);

                })

    最后一定要注意 重启服务   修改vue配置文件后必须重启服务!

Vue项目使用axios发送HTTP请求,并将项目打包发布到Nginx服务器上,可以按照以下步骤进行操作: 1. 首先,在Vue项目安装axios: ``` npm install axios ``` 2. 在Vue项目的入口文件(通常是`main.js`)引入axios: ```javascript import axios from 'axios' Vue.prototype.$http = axios ``` 这样,你就可以在Vue组件使用`this.$http`来发送HTTP请求了。 3. 在需要发送HTTP请求的组件使用axios: ```javascript this.$http.get('/api/data') .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }) ``` 注意:这里的`/api/data`是你要请求的API接口路径,根据你的实际情况进行修改。 4. 接下来,需要修改Vue项目的配置文件`vue.config.js`,配置代理以解决跨域问题: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://your-backend-server', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` 这里的`target`是你的后端服务器地址,根据你的实际情况进行修改。 5. 打包项目: ``` npm run build ``` 执行该命令后,会在项目根目录下生成一个`dist`文件夹,里面包含了打包后的静态文件。 6. 将生成的静态文件部署到Nginx服务器上,可以将`dist`文件夹下的所有文件放置到Nginx的静态资源目录下。 7. 修改Nginx配置文件`nginx.conf`,配置反向代理: ```nginx server { listen 80; server_name your-domain.com; location /api { proxy_pass http://your-backend-server; } location / { root /path/to/your/dist; try_files $uri $uri/ /index.html; } } ``` 这里的`your-domain.com`是你的域名,`your-backend-server`是你的后端服务器地址,`/path/to/your/dist`是你放置静态文件的路径,根据实际情况进行修改。 8. 重启Nginx服务使配置生效。 现在,你的Vue项目就可以通过axios发送HTTP请求,并且在使用Nginx部署后能够正常访问了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阁下何不同风起?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值