【问题标题】:How to get response status 403 instead of 0 in Angular 7+如何在Angular 7+中获取响应状态403而不是0
【发布时间】:2019-11-04 12:55:00
【问题描述】:

例如,当防火墙阻止我的后端中的任何一个时,我想显示带有 url 的弹出窗口。我应该得到 403 状态响应,但我一直得到状态 0。

我在这里看到类似的主题,但我不知道是否应该使用它:

Angular http returning status 0, but I expect 404

这个解决方案有什么好处吗?如果是,那么我应该如何或在哪里使用它?

在我的服务中应该只有 error.status == 403 但我无法弄清楚如何获得真实状态而不是 0。

我不认为 CORS 是问题,因为如果防火墙阻止我的请求,那么它永远不会到达后端。我说的对吗?

this.httpClient.request(request).toPromise()
                .then(
                    (res: any) => { // Success
                        resolve(res.body);
                    },
                    (error: any) => { // Error
                        if (error.status == 403){
                            this.respondedWithError$.emit(error.url);
                        }
                        if (error.status == 0){
                            this.respondedWithError$.emit(error.error.currentTarget.__zone_symbol__xhrURL);
                        }
                        reject(error.error);
                    }
                );

当前结果:

message: "Http failure response for (unknown url): 0 Unknown Error"
name: "HttpErrorResponse"
status: 0
statusText: "Unknown Error"

预期结果:

status: 403

【问题讨论】:

  • 没有人知道如何获得该状态码?任何建议...解决方法...

标签: angular7 httpresponse firewall http-status-code-403


【解决方案1】:

这不是 Angular 的问题,您需要在服务器端进行调查。

如果您查看网络选项卡,您会发现您的请求从未真正发送过,这就是您没有得到预期的服务器响应的原因。

这是一个 CORS 问题,您需要确保以正确的方式实施 OPTIONS 预检请求,例如以成功代码响应并为您的请求发送正确的标头。

【讨论】:

    猜你喜欢
    • 2017-11-29
    • 2019-10-07
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多