角度“有时”会在成功的http响应上引发错误

时间:2019-01-09 08:34:05

标签: angular http asp.net-core https

我有一个非常奇怪的行为,我无法解释。我有一个ASPNET Core(2.1)API,只是一个标准API,没有花哨的地方。

我正在使用Angular(7)构建前端。该前端用于对特定实体执行某些CRUD操作。

我已经在后端服务中完成了所有必需的步骤(API运行并且所有端点都已到位,CORS设置为允许所有操作)。另外,我对每个端点都有邮递员请求,每个请求都成功。

我在Angular有Redux(ngrx)商店,那里也是版本7。

现在,当我执行get请求时(无论是列表请求还是单个实体请求都没有关系),请求始终会成功。在POST上。 PUT和DELETE请求,但是,该请求有时会失败。

当我在后端启动调试会话时,我看到后端总是成功,根据请求返回200、201或204。让我们以PUT为例,始终在正文中以实体的新版本返回200响应(以课程的JSON格式)。

现在,此放置请求SOMETIMES在前端失败,再次,服务器始终返回200。如果我在前端未进行任何数据更改,只需继续发送具有相同标头和相同内容的相同请求主体,使后端在同一主体上返回相同的(成功)响应,前端有时工作正常,有时会引发错误。

我正在使用rxjs 6.3.3

这是一个示例,说明我如何在redux效果中处理服务请求:

@Effect()
updatedEntity$: Observable<Action> = this.actions$.pipe(
  ofType<UpdatedEntity>(shortenedLinksActions.updatedEntity),
  debounceTime(300),
  switchMap((action) =>
    this.service.put(action.dto).pipe(
      map((response: EntityDto) => {
        return new UpdatedEntitySuccess(response);
      }),
      catchError((response: HttpErrorResponse) => {
        if (response.status === 0) {
          return of(
            new GeneralFailure(
              'The backend service is not responding'
            )
          );
        }
        return of(new GeneralFailure(response.error));
      })
    )
  )
);

[edit]
嗯,如果我关闭https重定向,这意味着后端能够运行HTTP而不是https,那么所有请求都会成功(明智的后端和前端),这与https有关。当我仅在开发人员模式下运行时,使用自签名的开发人员证书,我假设有角的http客户端卡在了某个地方。 如果是这样,我仍然不明白为什么它偶尔接受

[编辑2]
哦,哇...当我调试运行项目而不是IIS Express的系统时,所有内容也都可以在自签名ssl证书下运行。这意味着ng http客户端具有一些通过在IIS Express中运行的自签名证书向后端发送请求的组。所以现在我的问题消失了,因为代替IIS Express运行系统项目对我来说很好,但是我仍然想知道为什么它不能在IIS Express中运行。

0 个答案:

没有答案