刷新浏览器后,包含“hypen”的URL不会经过angular度$ routeProvider.when(),而直接请求服务器

我正在使用MEAN Stack和用于开发项目的html模板。 由于我使用的是jade,$ routeProvider的所有.when()都通过服务器,然后呈现。 事情是绝对没有问题,直到最近我添加$ httpProvider.interceptor用于validation每个请求。 基本上,我开始使用基于JWT令牌的身份validation,并在向服务器请求任何东西之前,我在拦截器中附加了“授权”标头。 而第一个保护apis的中间件,我正在validation“授权”头中存在的令牌。 如果存在,则继续,否则发送授权错误。

现在,正如问题的标题所述。 为了增加可读性,我在两个单词之间包含了一些包含hypen( – )的 URL。

例如: .when('/firstPart/secondPart1-secondPart2/thrirdPart', { templateUrl: '/path/to/file' })

这个url工作正常,如果用户经历了正常的stream量到这个url。 当用户进入这个页面并点击浏览器的刷新button时出现问题,因为他得到一个错误“授权头未设置”

我做了一些什么和为什么发生这样的研究,我发现AngularJS的答案不拦截来自地址栏的直接请求 。 据了解,对于这个答案和其他一些我明白,在刷新浏览器直接请求服务器,并没有通过angular路由,因此,连接到每个请求标头的授权标头的拦截器不会被调用。

正如同样的链接build议,解决方法是,如果authenticationvalidation失败,打电话给'/' ,我不希望这样做,因为用户刚刚刷新页面,他必须得到相同的页面,因为他在他精神压抑之前。 我困在这里如何做到这一点。

另外,还有另一个令人难以置信的是,如果我删除了'hyphen'(-) ,并使其成为一个单词即.when('/firstPart/secondPart1SecondPart2/thrirdPart', { templateUrl: '/path/to/file' }) ,即使用户点击刷新button,一切都按预期工作。 首先经过angular路由器和拦截器附加Authorization头,然后对该模板进行获取请求。

想知道,在URL中使用连字符有什么问题吗? 但是,我不想删除连字符,因为我已经在很多地方使用了连字符,而且我也觉得它有好处-两个词需要在URL中一起显示,而不是使它们成为骆驼。

S,最后我有两个问题:1.如何在刷新之前加载用户所在的页面,而不是redirect到'/'login url 。 2.上面解释的问题只出现在连字符( – )URL中,URL中有'-'的问题是什么。