Как получить код ошибки HTTP вместо кода ошибки CORS (0) с помощью HttpClient - PullRequest
0 голосов
/ 12 января 2020

Я использую HttpClient для запроса сервера, которым я не могу управлять.
Он возвращает 200 HTTP-код состояния, если успех и 400 - сбой операции.

this.http
      .post(this.getUrl(), data, { headers: headers, responseType: 'text' })
      .pipe(catchError(this.handleError))
      .subscribe();

handleError(error) {
  error.status; // always CORS error (0) however real HTTP code is 200 or 400 
  ...  
}

Например, это успех код

enter image description here

Так что мой вопрос, есть ли способ получить реальный HTTP-код вместо кода ошибки CORS, используя HttpClient, если это невозможно, хотя бы способ скрыть предупреждения CORS в консоли браузера?

Ответы [ 2 ]

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

Одной из целей изолированной среды браузера является запрет запроса от домена A, получение информации из домена B. CORS - это способ явного разрешения доступа.

Так что, если соответствующие заголовки CORS не установлено, возможность доступа к информации об ответе (например, коду состояния) будет серьезной проблемой безопасности.

Поэтому ответ в основном «нет», если:

  1. Вы можете управлять сервером и изменять заголовки.
  2. Вы пишете новую службу, которая передает запросы через домен, который вы делаете .
1 голос
/ 12 января 2020

Это связано с тем, что HttpClient запускает запрос OPTION перед полетом (что и должно быть), и из-за конфигурации CORS на сервере ваш вызов API не удался.

Если вы этого не сделаете иметь контроль над сервером API, попробуйте уточнить у владельца, как разрешить вашему домену звонить, а также разрешить headers или methods в запросе.

Вы можете обратиться к этому вопросу, вы можете найти решение, соответствующее вашим потребностям.

...