赞
踩
前后端交互通常需要跨域,常用的跨域方法有cors、jsonp、代理服务器
vue脚手架可以通过
devServer.proxy
配置一个代理服务器
说明文档:https://cli.vuejs.org/zh/config/#devserver-proxy
npm i axios
import axios from 'axios'
目前所处的是 http://localhost:8081/,而发请求联系的是 http://localhost:5000/,引起了跨域问题
在vue.config.js中添加如下配置:
devServer:{
proxy:"http://localhost:5000"
}
然后把脚手架给停掉,然后重新启动
然后再把原先请求的地址改一下,就可以请求到跨域的数据了
说明:
注意:不能灵活的控制请求是否走代理
当你请求的资源8081本身就有,他就不会把请求转发给5000
编写vue.config.js配置具体代理规则:
module.exports = { devServer: { proxy: { '/api1': { // 匹配所有以 '/api1'开头的请求路径 target: 'http://localhost:5000',// 代理目标的基础路径 changeOrigin: true, pathRewrite: { '^/api1': ''} // 必须写 }, '/api2': { // 匹配所有以 '/api2'开头的请求路径 target: 'http://localhost:5001',// 代理目标的基础路径 changeOrigin: true, pathRewrite: { '^/api2': ''} // 必须写 } } } } /* changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000 changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080 changeOrigin默认值为true */
说明:
步骤一:开启代理服务器
步骤二:加前缀
vue.config.js
const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, lintOnSave: false, // 关闭语法检查 // 开启代理服务器 (方式一) /* devServer: { proxy: 'http://localhost:5000' // 这会告诉开发服务器将任何未知请求 (没有匹配到静态文件的请求) 代理到http://localhost:5000 }, */ // 开启代理服务器 (方式二) devServer: { proxy: { '/api': { // 匹配所有以 '/api'开头的请求路径 target: 'http://localhost:5000', pathRewrite: { '^/api':
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。