【发布时间】: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