如何解决错误代码: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 会显示)
- 检查 AWS ApiGateway 是否正确处理了 OPTIONS 请求
- 在“网络”选项卡(如果您使用的是 Chrome)中,检查飞行前请求
- 您必须检查
access-control-allow-origin
发送的标头参数 服务器在网络日志(响应标头)中并确保它是 正确配置
如果没有任何效果,请删除 API 网关配置并重新创建它们(如果您有云形成脚本会很容易)。它总是有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。