我有一个运行以下 header 代码的 Node 服务器:
app.all('/*', function (req, res, next) {
// CORS headers
res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
if (req.method == 'OPTIONS') {
res.status(200).end();
} else {
next();
}
});
现在,在许多计算机和浏览器上,这都可以正常工作(包括我自己的),但是不在我办公室的人会收到以下错误消息:
好吧,这有点难以阅读,所以这里有两个错误:
- 无法加载资源:Access-Control-Allow-Origin 不允许来源
http://angular.mydomain.com
- XMLHttpRequest 无法加载
http://angular.mydomain.com:8080/login
。 Access-Control-Allow_origin 不允许来源http://angular.mydomain.com
。
谁能告诉我这是怎么回事?
标题
登录路径:
router.route('/login')
.post(function (req, res) {
var user = User.build();
var username = req.body.username || '';
var password = req.body.password || '';
if (username == '' || password == '') {
res.status(401);
res.json({
"status": 401,
"message": "Invalid credentials"
});
return;
}
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync(password, salt);
user.retrieveByNamePassword(username, function (users) {
var i = 0;
if (bcrypt.compareSync(password, users.password)) {
var log = User_Login.build()
log.findLastLogin(users.id, function (result) {
users.last_login = result;
if (users.user_type_id > 3) {
res.json(genToken(users, null));
}
else {
var div = Division.build();
selected_user = users;
var root = [selected_user.division_id];
div.retrieveByDivisionId(selected_user.division_id, function (division) {
var result = [];
var root = [division];
(function loop() {
var element = root[0];
var divisions = Division.build();
divisions.retrieveByParentId(element.id, function (divisions) {
if (divisions) {
divisions.forEach(function (division) {
root.push(division);
});
result.push(element.id);
root.splice(0, 1);
if (root.length > 0) {
loop()
}
else if (root.length == 0) {
res.json(genToken(users, result));
}
} else {
res.send(401, "No division found");
}
});
}());
})
}
}, function (error) {
var i = 0;
});
} else {
// If authentication fails, we send a 401 back
res.status(401);
res.json({
"status": 401,
"message": "Invalid credentials"
});
return;
}
}, function (error) {
res.status(401);
res.json({
"status": 401,
"message": "Invalid credentials"
});
return;
});
});
最佳答案
也许他收到了 404 或类似代码,表示无法从该外部网络访问资源。
关于javascript - Node header 已设置,但某些用户遇到访问控制错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847416/