微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误代码:0 ExceptionMessage:未知 url的 Http 失败响应:0 Angular 5 中的未知错误

如何解决错误代码:0 ExceptionMessage:未知 url的 Http 失败响应:0 Angular 5 中的未知错误

我在我的 Angular 5 项目中收到此错误错误代码:0 ExceptionMessage:(未知 URL)的 Http 失败响应:0 未知错误”。

但是,我无法重现这个问题,我在 Rollbar 错误日志中看到了这个重复出现的问题。我在本地机器上尝试了相同的步骤,也尝试在不同的浏览器(如 chrome、safari 等)中重新创建,但没有成功。

我在前端使用 AWS lambda 和 .NET core 2.1、API 代理网关和 Angular 5。

AngularJs 代码

getorgPublicAssetName(id: number): Observable<any> {
    let content = this.appSharedService.getSitecontents();
    if (content !== '')
      return Observable.of(content);
    if (id !== undefined)
      return <Observable<any>>(
        this.httpClient
          .get(this.organizationUrl + '/SiteContent/' + id)
          .map(result => {
            this.appSharedService.setsitecontents(result);
            return result;
          })
          .pipe(catchError(this.exceptionService.catchBadResponse))
      );
    else return Observable.of();
  }

以下是我已经在使用 cors 的 startup.cs 配置函数

public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
        {
            app.UseXRay("Organizations");
            app.UseMiddleware(typeof(ErrorHandlingMiddleware));

            Environment.SetEnvironmentvariable(EnvironmentvariableAWSRegion.ENVIRONMENT_VARIABLE_REGION,Configuration["AWS:Region"]);

            // Create a logging provider based on the configuration information passed through the appsettings.json
            // You can even provide your custom formatting.
            loggerFactory.AddLambdaLogger(Configuration.GetLambdaLoggerOptions());

            //Enable swagger endpoint if the environment is not production

            if (!IsProductionEnvironment)
            {
                // Enable middleware to serve generated Swagger as a JSON endpoint.
                app.UseSwagger();

                // Enable middleware to serve swagger-ui (HTML,JS,CSS,etc.),specifying the Swagger JSON endpoint.
                app.UseSwaggerUI(c =>
                {
                    if (env.EnvironmentName == "Local")
                        c.SwaggerEndpoint(SwaggerLocalEndpoint,ApiName);
                    else
                        c.SwaggerEndpoint(SwaggerEndpoint,ApiName);
                });
            }

            app.UseCors(policy =>
            {
                //Todo: This has to be addressed once we deploy both api and ui under the same domain
                policy.AllowAnyOrigin();
                policy.AllowAnyHeader();
                policy.AllowAnyMethod();
                policy.WithExposedHeaders("WWW-Authenticate");
                policy.WithExposedHeaders("X-Total-Count");
            });
            app.UseAuthentication();
            app.UseMvc(routeBuilder =>
            {
                routeBuilder.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
                routeBuilder.MapODataServiceRoute("odata","odata",OrganizationModelBuilder.GetEdmModel());
            });
            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });
            app.UseResponseCaching();
        }
    }

解决方法

由于 CORS 错误,您的浏览器不允许您的代码读取 HTTP 响应。

您将在浏览器控制台日志中看到错误(Chrome 会显示)

  1. 检查 AWS ApiGateway 是否正确处理了 OPTIONS 请求
  2. 在“网络”选项卡(如果您使用的是 Chrome)中,检查飞行前请求
  3. 您必须检查 access-control-allow-origin 发送的标头参数 服务器在网络日志(响应标头)中并确保它是 正确配置

如果没有任何效果,请删除 API 网关配置并重新创建它们(如果您有云形成脚本会很容易)。它总是有效

Response headers

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?