angularjs – Angular ui-router按下刷新会导致404错误
好的,我知道这是一个开放式的问题,但是 –
我正在使用AngularJS 1.4.x和ui-router运行应用程序.在大多数情况下,一切正常并且如预期的那样.我的各个页面使用ui-sref来导航,页面按预期显示,并且显示的URL看起来正确.但是,如果我在任何页面上刷新页面(F5),则会导致404错误.输入URL不再有效. 可能涉及的事情: >我打开了$locationProvider.html5Mode(true)标志 $rootScope.$on(‘$stateChangeStart’,function(event,toState, 管理页面访问(身份验证) 解决方法
问:刷新页面时,实际发生了什么?
答:您正在通过浏览器向服务器发送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(); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |