- 服务器配置(修改端口,反向代理解决跨域) dveServer
当我们遇到默认端口号8080被占用,我们需要使用dveServer.port修改端口号
案例:
请求猫眼电影的数据
https://m.maoyan.com/ajax/movieOnInfoList
// vue.config.js
module.exports = {
// 服务器配置
devServer: {
port: 9000, //服务器端口修改
proxy: {
// 标识符:反向代理的配置项
// 标识符我们选择接口中统一存在的路径,请求路径的域名后的第一个路径设为标识符
'/ajax': {
target: 'https://m.maoyan.com', // 模板源
changeOrigin: true, //使用我们的源来代替目标源
/*
https://m.maoyan.com/ajax/movieOnInfoList 目标源
https://localhost:9000/ajax/movieOnInfoList 我们的
*/
}
}
}
}
// App.vue
<template>
<button @click="getmsg">click here send request</button>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
// 项目目录下 yarn add axios下载
import axios from 'axios' // 引入 axios
export default defineComponent({
data(){
return{
msg:null
}
},
methods:{
getmsg(){
axios({
// 请求路径:https://m.maoyan.com/ajax/movieOnInfoList
url: '/ajax/movieOnInfoList',
params:{
token:'',
optimus_uuid:'F04A6B70984011EB89DA9FC9709563EEE1FC4395B1554473B6696781D0EF2CDC',
optimus_risk_level:71,
optimus_code:10
}
}).then(res=>{
console.log(res)
}).catch(error=>Promise.reject(error))
}
}
})
</script>
vue脚手架配置代理
方法一:
在 vue.config.js 中添加如下配置:
module.exports = {
......
devServer: {
proxy: 'http://localhost:5000'
}
}
说明:
- 优点:配置简单,请求资源时直接发给前端(8080)即可。
- 缺点:不能配置多个代理,不能灵活的控制请求是否走代理。
(如请求family,public文件夹里有family文件则之前请求该文件,不走代理。)
- 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器(优先匹配前端资源)
方法二:
vue.config.js 配置具体代理规则:
module.exports = {
devServer: {
proxy: {
'/api': { // 匹配所有以 '/api' 开头的请求路径
target: 'http://localhost:5000', // 代理目标的基础路径
changeOrigin: true,
pathRewrite: {'^/api':''}
},
'/foo': {
target: 'http://localhost:5001',
changeOrigin: true,
pathRewrite: {'^/foo':''}
},
......
}
}
}
// changeOrigin 设置为true时,服务器收到的请求头中的host为: localhost:5000
// false时, localhost:8080
// 默认值为 true。
说明:
- 优点:可以配置多个代理,且可以灵活的控制请求是否走代理。
- 缺点:配置略微繁琐,请求资源时必须加前缀。
请求:
axios.get('http://localhost:8080/family').then(
response => {
console.log('请求成功了', response.data);
},
error => {
console.log('请求失败了', error.message);
}
)