客户端和服务器之间的ajax调用中响应状态代码的差异

时间:2016-07-05 13:42:11

标签: angularjs ajax node.js express

设置: - 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);
        };
    }

1 个答案:

答案 0 :(得分:1)

HTTP 304是Not Modified的代码。当再次请求相同资源并且响应未更改时,Node.js自动给出304。这使您不必再发送两次相同的数据。

我评论的ETA内容:

阅读角度文档,我认为angular会将所有成功的请求解析为200.将其添加到事实中,他们已经更新了事物,以便它可以自动处理304状态(提供与上次相同的内容,可能直到状态)你有Angular将你的所有304状态转换为200.有关更多讨论,请参阅here