-1

我有一个使用 AWS 上托管的 lambda API 的 Ionic 4 应用程序。在 API 网关上启用了 CORS。以下片段来自对 API 的 curl 请求。

< 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);
      });
    });
  }

帮助?

4

1 回答 1

0

这最终成为亚马逊方面的一个错误。curl 片段来自 GET 方法,该方法发送 CORS 标头。POST 方法不是。在不更改任何内容的情况下重新部署 API 后,GET 方法不再发送 CORS 标头,而 POST 方法是。该应用程序目前正在运行。

于 2019-02-16T11:59:50.690 回答