Angular 8 / NodeJS Ошибка CORS: расположение перенаправления запрещено - PullRequest
0 голосов
/ 09 января 2020

Я использую 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-адресах, однако, что может быть наилучшим подходом в моей ситуации?

1 Ответ

0 голосов
/ 12 января 2020

Ответ состоял в том, что вместо перенаправления в бэкэнд-запрос GET выполнялся с использованием «требуемого» пакета, а затем сохранялся в переменную, которая затем пересылалась обратно во внешний интерфейс.

...