【问题标题】:Ionic CORS Error, But Server Has CORS Enabled离子 CORS 错误,但服务器已启用 CORS
【发布时间】:2019-07-10 04:59:56
【问题描述】:

我有一个使用 AWS 上托管的 lambda API 的 Ionic 4 应用程序。在 API 网关上启用了 CORS。下面的 sn-p 是从一个 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

This post 讨论了一些可能的解决方法(更改内容类型等),但它们不起作用。

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

帮助?

【问题讨论】:

  • 似乎不像启用了 CORS。发送 cors 标头显然没有帮助。
  • 问题中引用的消息不是 CORS 错误,而是 CORB 错误。这表明浏览器不希望应用程序/json 响应以您的前端代码尝试使用它的方式使用。或者,响应实际上不是 JSON 文档,因此浏览器会阻止它,因为它被错误标记了。无论如何,我猜这个错误是由您的代码对 LegalResponse 函数中的响应执行的任何处理触发的。考虑更新问题以显示您的代码尝试对响应执行的操作。

标签: ionic4 angular-httpclient cross-origin-read-blocking


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 2019-01-28
    • 1970-01-01
    • 2017-05-08
    • 2018-09-02
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多