【发布时间】:2015-05-20 06:07:50
【问题描述】:
我已在我的应用程序中将 html5Mode 设置为 true。我的路线定义如下:
app.config(['$routeProvider', '$locationProvider',
function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');
$routeProvider.
when('/api/', {
templateUrl: '../../html/console.html',
controller: 'paramsController'
}).
when('/', {
templateUrl: '../../html/timeline.html',
controller: 'timelineController'
}).
otherwise({
redirectTo: '/'
});
}]);
但是每当我以http://localhost:3000/api 发出请求时,它都会进行 HTTP 调用,请求会发送到服务器,而不是解析到我的角度路由。
这里有什么需要注意的。
我的主页添加了以下标签:
<base href="/">
只是说明一下,以防它在这里改变任何东西。
是否需要其他配置。我将node.js 用作express.js 的服务器。
【问题讨论】:
-
HTML5 模式将始终对任何不是由 Angular 直接生成的东西发出服务器请求;只有使用哈希路由(
#/)才能避免服务器调用。服务器必须设置为将不打算处理的任何内容重定向回您的 index.html。在同一浏览器会话中来自 Angular 的请求可以通过利用 HTML5 推送状态来避免服务器调用,但来自其他来源的请求通常不会使用推送状态来访问您的 Angular 应用程序。
标签: angularjs node.js angularjs-routing location-provider