问题描述:

前后端分离开发,分开部署. 页面刷新 直接报404 错误的解决办法

提示:  先在 .env.development 中 配置 VUE_APP_BASE_API , 将 '/' 替换为 后端地址 'http://localhost:8888/'

如果是对应的发布的正式环境,也要修改  .env.production 的VUE_APP_BASE_API 配置.

并且在 后端 appsettings.json 的 corsUrls 节点中,配置 前端的 地址,比如 http://localhost:8887, http://localhost:* 等

解决办法1: 使用 vue history 模式(路由访问,地址栏中间 没有 #)

在 src/router/index.js 中 最末尾

增加和修改

//在 export const constantRoutes = = [{ }] 的后面

const originalPush = Router.prototype.push;
Router.prototype.push = function push(location, onResolve, onReject) {
if (onResolve || onReject)
return originalPush.call(this, location, onResolve, onReject);
return originalPush.call(this, location).catch((err) => err);
}; export default new Router({
base: process.env.VUE_APP_ROUTER_PREFIX,
mode: 'history', // 去掉url中的#
scrollBehavior: () => ({ y: 0, x: 0 }),
routes: constantRoutes
})

然后修改在 logOut的时候,退出的路由

,找到 调用 this.$store.dispatch('LogOut') 的地方

分别在 src\layout\components\Navbar.vue 和  src\utils\request.js

this.$store.dispatch('LogOut').then(() => {
const url = process.env.VUE_APP_ROUTER_PREFIX + 'index';
location.href = url
})

然后在 根目录下的 vue.config.js

module.exports ={
devServer: {
host: '0.0.0.0',
port: 8887,
open:true,
proxy:{
}
disableHostCheck: true,
    //增加如下代码
 // history模式下的url会请求到服务器端,但是服务器端并没有这一个资源文件,就会返回404,所以需要配置这一项
historyApiFallback: {
rewrites: [{
from: /.*/g,
to: '/index.html' //如果是其他地址,在这里修改
}]
},
}
}

解决办法2: 不使用history模式,改为使用hash模式 (地址栏中访问有#)

1.在 src/router/index.js 中 最末尾,修改

把 mode: 'history' 注释, (等价于 采用默认的 mode:hash 模式)

export default new Router({
base: process.env.VUE_APP_ROUTER_PREFIX,
//mode: 'history', // 去掉url中的#
//scrollBehavior: () => ({ y: 0, x: 0 }),
routes: constantRoutes
})

2.然后修改在 logOut的时候,退出的路由

,找到 调用 this.$store.dispatch('LogOut') 的地方

分别在 src\layout\components\Navbar.vue 和  src\utils\request.js

this.$store.dispatch('LogOut').then(() => {
const url = process.env.VUE_APP_ROUTER_PREFIX + '#/index';
location.href = url
})

以上两种解决方案,亲测有效.

最新文章

  1. Linux Memcached安装以及PHP扩展安装
  2. PHP 获取当天 凌晨 时间戳常用代码
  3. 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名
  4. 如何利用花生壳和VisualSVN Server建立远程代码仓库
  5. 【转载】#303 - Accessibility of Class Members
  6. HLG 1400 汽车比赛
  7. EBS查询用户客户化的文件配置
  8. JavaScript使用button提交表单
  9. vc++笔记十一
  10. 步进控件——UIStepper
  11. 【ci框架基础】之部署百度编辑器
  12. SpringBoot-SpringMvc的Interceptor拦截器配置
  13. 【Android Developers Training】 71. 显示翻牌动画
  14. Jmeter之接口测试
  15. oninput、onchange与onpropertychange事件的区别, 与input输入框实时检测
  16. 【Java】Comparable和Comparator接口的区别
  17. OScached页面缓存的入门使用
  18. 遇见requestAnimationFrame
  19. 在ecshop中添加页面,并且实现后台管理
  20. Cryptography I 学习笔记 --- 信息完整性

热门文章

  1. element-ui select可搜索下拉框无法在IOS或Ipad调起小键盘输入法
  2. 后端框架的学习----mybatis框架(5、分页)
  3. 自建流媒体如何录制视频。齐博x1齐博x2齐博x3齐博x4齐博x5齐博x6齐博x7齐博x8齐博x9齐博x10
  4. Three.js中加载外部fbx格式的模型素材
  5. 系统整理K8S的配置管理实战-建议收藏系列
  6. dlv远端调试go的问题
  7. 读 Clean Code,关于变量命名和可维护代码
  8. leetcode学习记录2.13
  9. orcle恢复报错:ORA-00392: 日志 2 (用于线程 1) 正被清除, 不允许操作
  10. RAID5的配置流程及模拟硬盘损坏