大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
一、什么是跨域问题
同源:域名,协议,端口均相同
不同源就是跨域,比如你的前端为localhost:9528
,后端为localhost:8080
,此时前端去访问后端接口就会产生跨域问题,因为端口不同。
这里不详细讲,可参考百度百科-同源策略。
二、如何解决
跨域问题前后端都可以解决,这里仅提供vue的前端跨域解决方案:
前端vue.config.js配置如下,然后保证在你访问后端接口时加个前缀/api
。
devServer: {
port: port,
open: false,
overlay: {
warnings: false,
errors: true
},
proxy: {
// vue2.x版本为 proxyTable,vue3.x为proxy。
// detail: https://cli.vuejs.org/config/#devserver-proxy
'^/api': {
target: 'http://localhost:9999', // 这里的端口是后端端口
changeOrigin: true,
secure: false, // 如果是https接口,需要配置这个参数为true
pathRewrite: {
// 路径重写
'^/api':''
}
}
}
}
三、例子
以下例子访问接口的时候都会保证访问的路径为:/api/about/first
,包含前缀/api
例1 以axios为例
axios.get('/api/about/first', function (res) {
console.log(res)
})
例2 以 vue-element-admin为例
request.js:baseURL这里不写 baseURL
const service = axios.create({
// baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 10000 // request timeout
})
api/xxx.js: 在接口这里加前缀
import request from '@/utils/request.js'
export default {
getFirst() {
return request({
url: '/api/about/first',
method: 'get'
})
}
}
vue.config.js:
devServer: {
port: port,
open: false,
overlay: {
warnings: false,
errors: true
},
proxy: {
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
'^/api': {
target: 'http://localhost:9999', // 这里的端口是后端端口
changeOrigin: true,
secure: false, // 如果是https接口,需要配置这个参数为true
pathRewrite: {
'^/api':''
}
}
}
}
例3 仍以 vue-element-admin为例
request.js:baseURL这里加前缀
const service = axios.create({
baseURL: '/api', // url = base url + request url process.env.VUE_APP_BASE_API+'api'
withCredentials: true, // send cookies when cross-domain requests
timeout: 5000 // request timeout
})
api/xxx.js:这里不加前缀
import request from '@/utils/request.js'
export default {
getFirst() {
return request({
url: '/about/first',
method: 'get'
})
}
}
vue.config.js:
devServer: {
port: port,
open: false,
overlay: {
warnings: false,
errors: true
},
proxy: {
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
'^/api': {
target: 'http://localhost:9999', // 这里的端口是后端端口
changeOrigin: true,
secure: false, // 如果是https接口,需要配置这个参数为true
pathRewrite: {
'^/api':''
}
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192600.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...