我的ip地址是51结尾的
后端地址是54结尾的
第一种:如果我在vue文件里面请求路径这样写,就会出现404的错误,如下图
vue文件
mounted () {
apiPost('/getUserInit.do', {})
.then((res) => {
console.log(res)
})
},
疑问的是:请求的地址不应该是后端那个地址吗,为什么是我的ip地址。
第二种写法,就会出现302重定向的问题如下图
vue文件
mounted () {
apiPost('http://192.168.XX.54:8080/XXX/getUserInit.do', {})
.then((res) => {
console.log(res)
})
},
一下是关于代理的其他文件的代码。
main.js
// 使用了全局配置的axios 将axios挂载到原型上
Vue.prototype.axios = axios
// 请求默认的域名——跨域配置_配置请求的根路径
axios.defaults.baseURL = '/api'
axios.js
// 自定义一个Axios实例化对象
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
// baseURL:process.env.BASE_URL,
// baseURL: 'http://192.168.XX.54:8080/XXX',
// baseURL: '/api',
baseURL: process.env.VUE_APP_BASE_API,
// 超时
timeout: 50000,
// 设置跨域 Cookie
withCredentials: true
})
request.js
import http from './axios.js'
export const apiPost = (url, data) => {
return http({
baseURL: url,
method: 'post'
})
}
vue.config.js
// 跨域问题
devServer: {
open: true, // 自动打开浏览器
// 修复使用hostname访问,就会显示invalid host header。
disableHostCheck: true,
// 服务器地址主机名
// host:'0.0.0.0',
// 服务器端口号
// port:'8080/',
// 配置跨域
proxy: {
'/': {
// 这里后台的地址,
target: 'http://192.168.XX.54:8080/XXX',
// 如果要代理websockets
ws: true,
// 允许跨域
changeOrigin: true,
pathRewrite: {
// 使用 `/api` 代替 `target` 要访问的跨域的域名
'^/': ''
}
}
}
以上代码就这样,不知道问题是不是出在前端,我在这几个文件检查,却不知道哪里错了。
你上面这个请求的URL传进来都赋值给baseURL了,没看到有拼接的逻辑,那你传相对地址自然是404的,传绝对地址进去302说明服务是打过去了,但是本身你的访问地址应该有重定向了,感觉不一定是前端请求的问题。
先完善下baseURL + 相对地址的拼接逻辑吧