设置: - Node/Express/Angular 1.x
问题 - 客户端通过ajax调用收到的响应代码总是200(前提是它成功),无论服务器响应如何响应Headers给出304或200(在服务器控制台中检查,浏览器网络响应头)。为什么我们有这种差异?
在我的应用程序加载后,从客户端代码
进行以下调用getTeamInfo() {
return this.$http
.get(`${this.ApiUrl}`)
.then((response) => {
if (!response.data) {
console.log('could not obtain team information');
} else {
//Always **200** for every successful response
console.log('TeamInfo Call status .. ', response.status);
return response.data;
}
});
}
服务器的路由设置类似app.use('/teams', teams.teamInfo);
,其中teams = new TeamController();
function TeamController(){
this.teamInfo= function(req, res){
var teamsInfo = {};
if(req.session && req.session.teams){
teams = req.session.teams;
teamsInfo = {
name: teams.attributes.name + ' - ' + teams.attributes.slogan
};
}
//Express console gives GET /teams 304 or 200
res.send(teamsInfo);
};
}
答案 0 :(得分:1)
HTTP 304是Not Modified
的代码。当再次请求相同资源并且响应未更改时,Node.js自动给出304。这使您不必再发送两次相同的数据。
我评论的ETA内容:
阅读角度文档,我认为angular会将所有成功的请求解析为200.将其添加到事实中,他们已经更新了事物,以便它可以自动处理304状态(提供与上次相同的内容,可能直到状态)你有Angular将你的所有304状态转换为200.有关更多讨论,请参阅here。