Я пишу приложение, которое использует Angular для клиентской стороны и NodeJ для серверной части.
Я размещаю свое приложение с iis и iisnode.
Недавно я добавил проверку подлинности Windows в свое приложение, чтобы я мог знать, какой пользователь вошел в систему.
Большинство запросов работает нормально, но у меня возникла проблема авторизации с запросом, который выходит из другого маршрута (/ manage), но из того же источника.
Мой угловой код:
var url = "http://localhost:15001/auth/"+entredPass;
this.http.get(url, {withCredentials: true}).subscribe(res => {
...
});
Мой код NodeJs:
var app = express();
var allowCrossDomain = function (req, res, next){
res.header('Access-Control-Allow-Origin', origin); //Gets that from config
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
if(res.method == 'OPTIONS')
res.send(200);
else
next();
}
app.use(allowCrossDomain);
//This request works
app.get('isAlive', function(req, res){
res.setHeader('Access-Control-Allow-Origin', origin); //Gets that from config
res.status(200);
res.send(true);
});
//This one isn't - why?
app.get('/auth/:password', function (req, res){
...
var authRes = false;
if (password == "123456")
authRes = true;
res.setHeader('Access-Control-Allow-Origin', origin);
res.status(200);
res.send(authRes.toString());
});
Для второго GET я получаю ошибку:
Нет заголовка «Access-Control-Allow-Origin» в запрошенном
Resouce. Исходный код 'http://myurl' поэтому запрещен.
Единственная разница между этими двумя запросами состоит в том, что первый вызывается из 'http://myurl', а второй вызывается из' http://myurl/manage'.
Хотя, когда я смотрю на вкладку сети в браузере, я вижу, что источником неудавшегося запроса является 'http://myurl'.
Почему «Access-Control-Allow-Origin» не представлен и как я могу его решить?
Спасибо.