加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular ui-router按下刷新会导致404错误

发布时间:2020-12-17 17:53:43 所属栏目:安全 来源:网络整理
导读:好的,我知道这是一个开放式的问题,但是 – 我正在使用AngularJS 1.4.x和ui-router运行应用程序.在大多数情况下,一切正常并且如预期的那样.我的各个页面使用ui-sref来导航,页面按预期显示,并且显示的URL看起来正确.但是,如果我在任何页面上刷新页面(F5),则会
好的,我知道这是一个开放式的问题,但是 –

我正在使用AngularJS 1.4.x和ui-router运行应用程序.在大多数情况下,一切正常并且如预期的那样.我的各个页面使用ui-sref来导航,页面按预期显示,并且显示的URL看起来正确.但是,如果我在任何页面上刷新页面(F5),则会导致404错误.输入URL不再有效.

可能涉及的事情:

>我打开了$locationProvider.html5Mode(true)标志
>我用

$rootScope.$on(‘$stateChangeStart’,function(event,toState,
???toParams)

管理页面访问(身份验证)
>< base href =“/”>是
在我的index.html中因为html5Mode()没有它就无法工作

解决方法

问:刷新页面时,实际发生了什么?

答:您正在通过浏览器向服务器发送HTTP请求. GET /无论如何.因此,服务器需要为此请求设置路由,并使用index.html进行响应.目前,您获得的是404,因为您的服务器没有与GET /的请求匹配的路由.

问:为什么?

答:当您通过浏览器(而不是通过AJAX)发出请求时,您的浏览器将尝试显示对您的响应.防爆.如果响应是JSON,它将显示JSON.如果它是一个字符串,它会显示一个字符串.如果它是一个html页面,它会告诉你.你不能只为任何路由发回一个模板,因为如果你这样做,它只会渲染那个没有其他上下文的模板.您需要index.html来加载角度,运行您的控制器,将模板放在它的ui-view容器中等.

(将发送的是index.html,UI路由器将检查路由,发出对templateUrl的请求,运行控制器,然后再渲染它.)

问:怎么样?

答:这取决于a)你正在使用什么类型的服务器和b)你的文件结构.您可能希望在路由文件末尾的所有路由中捕获一些为index.html服务的路径.这就是我使用Node / Express的方式:

app.get('/*',function(req,res) {
  var url = path.resolve(__dirname + '/../client/index.html');
  res.sendFile(url,null,function(err) {
    if (err) res.status(500).send(err);
    else res.status(200).end();
  });
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读