Javascript AngularJS:factory$http.get请求继续获取html文件作为返回
我可以知道为什么我一直从我的angular工厂返回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 =
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/') });
});