一、背景
先简单介绍一下现在项目情况:前后端分离,后端服务是Java写的,前端是Vue+ElementUI。
最近的一个需求是:通过后端Api去获取前端路由表,原因是每个登录角色对应的前端路由表可能是不一样的(权限问题)
二、遇到的问题
因为前端Vue+ElementUI项目是单页应用——即只有一个index.html页面,如果路由从远程获取的话,每次F5或点击刷新按钮刷新页面的时候,就会找不到对应的路径而报404错误
三、解决方案
1、通过api远程获取路由,然后在前端生成对应路由
/* 将 服务器获得的[路由json字符串]转换成可访问的[前端路由组件] @remoteRouterMap 服务器获得的[路由json字符串] */ function transformJsonToRouter(remoteRouterMap) { const accessedRouters = remoteRouterMap.filter(route => { if (!route.component) { route.component = Layout }else { route.component = route.component.replace("@/views/","") route.component = _import(route.component) } if (route.children && route.children.length) { route.children = transformJsonToRouter(route.children) } return true }) return accessedRouters }
2、将路由模式改成history模式(vue默认是hash模式)
export default new Router({ mode: 'history', //后端支持可开 scrollBehavior: () => ({ y: 0 }), routes: constantRouterMap, linkActiveClass: 'is-active' })
3、在nginx中设置将404错误指向index文件
location / { try_files $uri $uri/ /index.html; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
我在我的本地主机上开发了一个laravel应用程序,运行非常好。我正试图使用Ubuntu 20.04上的nginx将其部署到AWS Lightsail实例上。我已经上传了我的laravel应用程序,并将nginx根目录更改为laravelapp/public。 主索引页(着陆页)工作正常,但我的路线都不工作(即 /login, /about等)。当我试图访问任何路线时,我得到一个404未找到错误。
当我hithttp://localhost:4200或http://localhost:4200/forgotPasswordEmail本地环境时,它可以正常工作。 在我的正式生产环境中打开索引页面并单击链接转到另一个页面也可以。但是,当我刷新页面或直接转到
我正在尝试使用springboot 2.2.7使用执行器刷新endpoint。但我面临404错误。 我的endpoint是一个POST调用 http://localhost:8080/actuator/refresh 回应: {"时间戳":"2020-11-25T11:50:01.172 0000","状态": 404,"错误":"未找到","消息":"无可用消息","路径":"/执行器/刷新"}
我尝试将Codeigniter与AngularJS路由一起使用,它正在工作,但我需要不使用散列。我使用以下代码: 但当我刷新页面时,跳转到404。
问题内容: 我知道有一些关于该主题的帖子。我已经阅读了大多数内容,但是我认为我不够熟练,无法理解应该怎么做。 我有一个AngularJS 1.0.7 Web应用程序。我刚刚将其配置为html5Mode以美化我的URL。我的网址现在看起来不错,但是出现了一个新的问题,我在更改之前没有遇到过。首次加载索引页面时,可以毫无问题地对其进行刷新。但是,如果我导航到示例/ about中的其他页面,然后刷新页面
router配置 点击进去页面时 这样点击后页面会出现但是刷新或者跳转别的路由会报错 刷新报错: 跳转其他路由报错: 如何解决?