【问题标题】:Angular2 post request despite a XMLHttRequest error尽管有 XMLHttRequest 错误,但 Angular2 发布请求
【发布时间】:2016-12-22 23:41:42
【问题描述】:

我向远程 API 发送请求。 API 需要一点时间才能继续进行。

在这短暂的等待时间之后,我可以在网络选项卡中看到 HTTP 200。在响应中,我得到了正确的预期信息。 API 方面的一切工作正常。

在控制台上的BIT,我可以看到我遇到了一个XMLHttpRequest错误。

为什么,特别是当我有一个 XMLHttpRequest 错误时,POST 完成时是 200?不应该被Angular2“阻止”吗?

意外的结果是:我的文件已正确上传并由 API 处理,但在 Angular2 中,它触发了我调用的 ERROR 部分

例如,如果我使用https://resttesttest.com/,它似乎遇到了同样的错误,但它并没有完成POST:

哦不! Javascript 返回一个 HTTP 0 错误。这可能发生的一个常见原因是您 从服务器请求的跨域资源不包括 响应中相应的 CORS 标头。

此调用的 Angular 2 代码

this.http
    .post(this.documentUploadAPIUrl, formData, options)
    .subscribe(
      res => {
        this.responseData = res.json();
        console.log(this.responseData);
        console.log('Uploaded a blob or file!');
      },
      error => {
        console.log('Upload failed! Error:', error);
      }
    );

【问题讨论】:

  • 首先您应该阅读 J J B 的链接,其次是您用作后端来创建 API 的内容
  • 我猜这是一个 JAVA 后端。不是我自己的作品。奇怪的是,即使状态最终是 200,我也会在控制台上收到错误...
  • 你能发布前 2 个内容类型为 text/html 的请求的标头吗?
  • 添加了关于第一个请求的内容的问题。其次是相同的加Proxy-Authorization: NTLM lRMAAAAD01JQzcxMDVDR0lfUUM问题似乎真的是触发了 XMLHttpRequest 错误并且忽略了状态为 200 的事实

标签: ajax http angular xmlhttprequest angular2-http


【解决方案1】:

尝试将 xmlHttpRequest 的 withCredential 属性设置为 true,这将发送由浏览器管理的凭据,在 Angular 2 中您可以这样做

    import { RequestOptions } from '@angular/http';


    this.http
      .post(this.documentUploadAPIUrl, formData, this.post_options)
      .subscribe(
        res => {
         this.responseData = res.json();
         console.log(this.responseData);
         console.log('Uploaded a blob or file!');
        },
        error => {
         console.log('Upload failed! Error:', error);
        }
       );



post_options() {
   return new RequestOptions({ method: 'post', withCredentials : true  });
}

【讨论】:

  • 测试过不行。我重新提出了我的问题,使其更准确。 Angular2 实际上正确地等待调用完成。状态为 200,但由于跨域 XMLHttpRequest 引发了错误,并且 Angular 实际上并没有看到状态 200,它只捕获错误。我尝试使用邮递员从本地主机上传调用,一切正常。
  • 不,已经考虑过了,并没有改变任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多