【发布时间】:2014-01-10 00:02:58
【问题描述】:
我注意到对不存在路径的 GET 请求不会返回 404 响应。相反,客户端得到“200 Ok”,AngularJS 呈现主视图,并将路径重写为/。对无意义 URI 的请求在服务器日志中记录为成功。如果我理解正确,问题是由于 AngularJS 处理路由,服务器必须接受任何 URI 的 GET 请求,并始终通过为应用程序的客户端提供服务(“200 Ok”或“304 Not Modified”)来响应。
例如,使用由angular-fullstack Yeoman 生成器搭建的项目,请求一个不存在的/unicorn 如下:
GET /unicorn 200 31ms - 3.29kb
GET /partials/main 304 36ms
GET /api/awesomeThings 304 5ms
处理请求的 Express 路由如下所示:
// server, last route:
app.get('*', controllers.index);
// controllers:
exports.index = function(req, res) {
res.render('index');
};
而index.jade 是应用程序整个客户端的根。
在快速查看 Github 上其他 AngularJS / Express 项目的服务器端代码(AngularJS Express seed、AngularJS login)后,我发现这是一种常见的模式。我想知道是否有更好的方法来处理对不存在路径的请求,以便客户端获得真正的 HTTP 404 响应?
【问题讨论】:
标签: http angularjs express single-page-application