Javascript AngularJS:factory$http.get请求继续获取html文件作为返回

Javascript AngularJS:factory$http.get请求继续获取html文件作为返回,javascript,angularjs,node.js,mean-stack,angularjs-factory,Javascript,Angularjs,Node.js,Mean Stack,Angularjs Factory,我可以知道为什么我一直从我的angular工厂返回html文件吗 这是我的后端路线 function ensureAuthenticated(req, res, next) { if (!req.headers.authorization) { return res.status(401).send({ message: 'Please make sure your request has an Authorization header' }); } var token =

我可以知道为什么我一直从我的angular工厂返回html文件吗

这是我的后端路线

function ensureAuthenticated(req, res, next) {
  if (!req.headers.authorization) {
    return res.status(401).send({ message: 'Please make sure your request has an Authorization header' });
  }
  var token = req.headers.authorization.split(' ')[1];
  var payload = jwt.decode(token, config.TOKEN_SECRET);
  if (payload.exp <= moment().unix()) {
    return res.status(401).send({ message: 'Token has expired' });
  }
  req.user = payload.sub;
  next();
}

app.get('/api/me', ensureAuthenticated, userHandler.getMe);
在my service.js中(我在这里尝试调试,将路由“/api/me”更改为其他路由,当我的后端路由中不存在这样的路由时,它仍然返回状态200

app.factory('Account', function($http) {
    return {
      getProfile: function() {
        return $http.get('/api/me'); 
      },
      updateProfile: function(profileData) {
        return $http.put('/api/me', profileData);
      }
    };
  });
在我的控制器中

$scope.getProfile = function() {
      Account.getProfile()
        .success(function(data) {
          $scope.user = data;
          console.log(data) // this print out the html file 
        })
        .error(function(error) {
          alert("something is wrong when retriving your data");
        });
    };
    $scope.getProfile();
console.log(数据)给我这个

在“网络”选项卡中


有人能帮我解决这个问题吗?我可以知道有什么方法可以调试这种问题吗?谢谢!

只需发送json作为响应

functionensureAuthenticated(req,res,next){
if(!req.headers.authorization){
    return res.json { status :'401',
        message: 'PleasemakesureyourrequesthasanAuthorizationheader'
    };
}vartoken=req.headers.authorization.split('')[
    1
];varpayload=jwt.decode(token,
config.TOKEN_SECRET);if(payload.exp<=moment().unix()){
    return res.json{
        status: '401',
        message: 'Tokenhasexpired'
    }
}req.user=payload.sub;next();
功能确保重新验证(req、res、next){
如果(!请求头.授权){
返回res.json{status:'401',
消息:“PleaseMakesureYourRequestHasAuthorizationHeader”
};
}vartoken=req.headers.authorization.split(“”)[
1.
];varpayload=jwt.decode(令牌,

config.TOKEN_SECRET);如果(payload.exp由于nodejs app.js文件而结束,则会打乱行的顺序

  "use strict";
// all environments
app.use(compress());
app.use(require('prerender-node'));
app.set('port', process.env.PORT || 3000);
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/static', express.static(path.join(__dirname, '/public')));
app.use(favicon());
app.use(errorHandler());
app.enable('trust proxy');

//for html5 mode 
app.get('*',function(req, res){ // this 
  res.sendFile('master.html', { root: path.join(__dirname, '/public/views/') });
});
routes(app, mongoose); // and this
mongoose.connect(config.MONGO_URI);
mongoose.connection.on('error', function() {
  console.error('MongoDB Connection Error. Please make sure that MongoDB is running.');
});

http.createServer(app).listen(app.get('port'),function(){
  console.log('Express server listening on port ' + app.get('port'));
});
应该是

routes(app, mongoose); // this 
 //for html5 mode 
 app.get('*',function(req, res){ // and this 
 res.sendFile('master.html', { root: path.join(__dirname, '/public/views/') });
 });

非常抱歉浪费了您的时间。我真的很抱歉,但是,我真的很感谢你们为帮助我解决这个问题所做的努力。谢谢!

请查看开发者窗格的“网络”选项卡,从那里调查发送的请求。服务器可以发送html页面作为响应数据。您可以使用标题:{Content-Type':}@UlukBiy您好谢谢您的回复,我在网络选项卡预览中看到了相同的内容,就像console.log(数据)一样您是否正在使用HTML5模式从url中删除#?可能您的服务器没有配置来处理它。因此,您将返回index.html而不是终点。@Steve hi,是的,我正在这样做。我可以知道可能的解决方案吗?
routes(app, mongoose); // this 
 //for html5 mode 
 app.get('*',function(req, res){ // and this 
 res.sendFile('master.html', { root: path.join(__dirname, '/public/views/') });
 });