Я использую Angular 8 с NodeJS бэкэндом в лабораторной среде. У меня есть кнопка в Angular, которая отправляет значение на внутренний сервер с помощью запроса POST. Когда значение получено, серверная часть обращается к серверу API на основе значения из формы, которая возвращает код состояния в JSON, который мне нужно использовать для условных выражений во внешнем интерфейсе.
Кнопка Angular logi c выглядит следующим образом:
this.form = this.fb.group({
ticket: [''],
})
}
const testTicket = this.form.value.ticket
submitForm() {
this.http.post('http://backend.com:8090/api/backendquery?testTicket='+ testTicket ,{}).subscribe (
(response) => {
console.log(response)
if(response != 'failure') {
this.ticketFound=true
this.ticketNotFound=false
status = 'Success'
} else {
// if(response == null) {
this.ticketNotFound=true
this.ticketFound=false
status = 'Failed'
}
})
}
Код внутреннего интерфейса, обращающийся к серверу API, выглядит следующим образом:
var cors = require('cors');
app.use(cors());
app.post('/api/backendquery', function(req, res){
res.redirect('https://username:password@myserver.com/ticketquery='+req.query.testTicket);
});
Я передал учетные данные в URL, поскольку сервер API требует аутентификации.
Я успешно получаю результаты от Postman, используя следующий URL:
http://backend.com: 8090 / api / backendquery ? testTicket = 12345
Однако при использовании браузера путем отправки значения на консоли появляется следующая ошибка:
'http://backend.com: 8090 / api / backendquery? testTicket = 12345 'from origin' http://frontend: 4200 'заблокирован политикой CORS: местоположение перенаправления' 'содержит имя пользователя и пароль, которые запрещены для запросов из разных источников.
Как видно из внутреннего кода, пакет CORS уже включен, что должно устранять ошибки CORS. Я знаю, что учетные данные не должны присутствовать в URL-адресах, однако, что может быть наилучшим подходом в моей ситуации?