Ошибка Ionic CORS, но на сервере включен CORS

У меня есть приложение Ionic 4, использующее лямбда-API, размещенное на AWS. CORS включен на шлюзе API. Следующий фрагмент — это запрос curl к API.

< content-type: application/json
< content-length: 42
< date: Sat, 16 Feb 2019 02:19:25 GMT
< x-amzn-requestid: 47a5fcac-3191-11e9-af42-d387861aa6ad
< access-control-allow-origin: *
< access-control-allow-headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
< x-amz-apigw-id: VK7vFGc4oAMFTqg=
< access-control-allow-methods: POST,OPTIONS

В этом сообщении обсуждаются несколько возможных обходных путей (изменение типа контента и т. д.). ), но они не работают.

Изменение заголовка Content-Type на text/plain или полное удаление этого заголовка не имеет значения.

На консоли Ionic также отображается следующая ошибка.

Cross-Origin Read Blocking (CORB) blocked cross-origin response
https://mycoolapi.com/GetLegal with MIME type application/json.
See https://www.chromestatus.com/feature/5629709824032768 for more details.

Ниже приведен мой сервисный код.

getLegal(data: any) {
    return new Promise((resolve, reject) => {
      let httpHeaders = new HttpHeaders().set('Content-Type', 'application/json');
      this.httpClient.post(this.apiUrl+'/GetLegal', JSON.stringify(data), {
        headers: httpHeaders,
      })
      .subscribe(res => {
        resolve(new LegalResponse(res));
      }, (err) => {
        console.log("Oops, there has been an error")
        reject(err);
      });
    });
  }

Помощь?


person SteveB    schedule 16.02.2019    source источник
comment
похоже, что CORS не включен. Отправка заголовков cors явно бесполезна.   -  person Dave Newton    schedule 16.02.2019
comment
Сообщение, указанное в вопросе, не является ошибкой CORS — это ошибка CORB. Это указывает на то, что браузер не ожидает, что ответ application/json будет использоваться так, как ваш интерфейсный код пытается его использовать. Или, может быть, ответ на самом деле не является документом JSON, поэтому браузер блокирует его, потому что он неправильно помечен. В любом случае, я предполагаю, что эта ошибка вызвана любой обработкой вашего кода в ответе в функции LegalResponse. Попробуйте обновить вопрос, чтобы показать, что ваш код пытается сделать с ответом.   -  person sideshowbarker    schedule 16.02.2019


Ответы (1)


Это оказалось ошибкой на стороне Amazon. Фрагмент curl был из метода GET, который отправлял заголовки CORS. Метода POST не было. После повторного развертывания API без каких-либо изменений метод GET больше не отправлял заголовки CORS, а метод POST — отправлял. Приложение пока работает.

person SteveB    schedule 16.02.2019