- 服务器配置(修改端口,反向代理解决跨域) dveServer
当我们遇到默认端口号8080被占用,我们需要使用dveServer.port修改端口号
案例:
请求猫眼电影的数据
https://m.maoyan.com/ajax/movieOnInfoList
// vue.config.jsmodule.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' // 引入 axiosexport default defineComponent({data(){return{msg:null}},methods:{getmsg(){axios({// 请求路径:https://m.maoyan.com/ajax/movieOnInfoListurl: '/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);})
