Angular POST становится OPTIONS и не может изменить бэкэнд для CORS - PullRequest
0 голосов
/ 20 октября 2018

У меня есть запрос на вход в систему, который я пытаюсь сделать.Мне нужно сделать POST-запрос к серверу с некоторыми параметрами, такими как имя пользователя, пароль, clientId и т. Д.

Код Angular 6:

let body = new URLSearchParams();
body.set('username', email);
body.set('password', password);
body.set('customerId', environment.customerId);
body.set('grant_type', 'password');

return this.http.post<JWT>(
    this.baseUrl + this.LOGIN_ENDPOINT,
    body.toString(),
    {
      headers: new HttpHeaders({
        'Content-Type': 'text/plain'
      })
    }
)

Когда я делаю POST-запрос, онизменяется на OPTIONS, и браузер блокирует ответ, потому что заголовок Access-Control-Allow-Origin не установлен.Однако на вкладке сети в Inspect Element вызов на самом деле правильный и возвращает 200 OK.

У меня нет доступа для изменения бэкенда, и серверная компания со мной не работает, потому чтоони могут сделать запрос, используя ajax.

Я пытался сделать тот же запрос, за исключением использования jquery и ajax, и он работает просто отлично, проблема, похоже, заключается в «сложном запросе», отправленном angular 6.

Код Ajax:

$.post("example.com", {
        grant_type: 'password',
        customerId: 'xxx',
        username: 'xxx',
        password: 'xxx'
    });

Код Ajax работает, код Angular запускает запросы OPTIONS / Preflight

Как решить эту проблему?

...