0


【vue】 配置代理

文章目录

参考文档

尚硅谷视频:https://www.bilibili.com/video/BV1Zy4y1K7SH?p=95

axios官网教程:https://axios-http.com/docs/intro

vue配置代理:https://cli.vuejs.org/zh/config/#devserver-proxy

跨域问题引入

安装axios发送ajax请求:

npminstall axios

使用:(官网:https://axios-http.com/docs/example)

  • 如图,通过axios请求服务器上的资源:在这里插入图片描述
  • 简单写了一个spring boot项目用于处理该请求:(你只需知道这个请求会被服务器处理)在这里插入图片描述
  • 出现跨域问题:(从8080端口请求5000端口,端口不一致)在这里插入图片描述

也就是:
在这里插入图片描述

配置代理解决跨域问题:

官网:https://cli.vuejs.org/zh/config/#devserver-proxy

方法一:

新建

vue.config.js

配置文件(和

package.json

放在同级目录下),配置如下内容:

const{ defineConfig }=require('@vue/cli-service')
module.exports =defineConfig({devServer:{proxy:'http://localhost:5000'}})

表示访问代理服务器,代理服务器就会帮你访问:http://localhost:5000

这样,就相当于配置了一个代理服务器,它和我们的项目具有相同的端口,我们访问它,就不存在跨域问题!

现在,我们访问代理服务器(端口为8080),而不是直接访问5000端口的服务器
在这里插入图片描述


总结一下,就是:
在这里插入图片描述

方法二:

方式二的扩展性更好,原理和方法一是一样的!

新建

vue.config.js

配置文件(和

package.json

放在同级目录下),配置如下内容:(含义在本文后面的总结里面有)

const{ defineConfig }=require('@vue/cli-service')
module.exports =defineConfig({devServer:{proxy:{'/api':{target:'http://localhost:5000',pathRewrite:{'^/api':''},//路径改写},}}})

再修改一下路径:
在这里插入图片描述

使用方法二最终的文件:

  • vue.config.js
const{ defineConfig }=require('@vue/cli-service')
module.exports =defineConfig({devServer:{proxy:{'/api':{target:'http://localhost:5000',pathRewrite:{'^/api':''},//路径改写},}}})
  • main.js
import Vue from'vue';import App from'./App.vue';newVue({el:'#app',render:(h)=>h(App),});
  • App.vue
<template><button@click="getStudentInfo">获取学生信息</button></template><script>import axios from"axios"exportdefault{methods:{getStudentInfo(){
            axios.get('http://localhost:8080/api/student/1').then(function(response){// handle success
                    console.log(response);}).catch(function(error){// handle error
                    console.log(error);}).then(function(){// always executed});}}}</script>

效果:
在这里插入图片描述

总结

在这里插入图片描述

在这里插入图片描述


本文转载自: https://blog.csdn.net/m0_55155505/article/details/127270689
版权归原作者 liangjiayy 所有, 如有侵权,请联系我们删除。

“【vue】 配置代理”的评论:

还没有评论