我已经安装了 CORS 并正在工作。这意味着我在 GET 或 POST 上没有收到 CORS 错误。我的请求都是在服务器上接收的,它们的响应都是在客户端上接收回来的。
也就是说,除非 Web API 中发生异常。然后,我没有得到异常详细信息,而是得到了 CORS 错误。所以客户端无法看到异常详细信息。
加载失败http://localhost:64630/api/sql/familiesCollection/create http://localhost:64630/api/sql/familiesCollection/create: 不
请求中存在“Access-Control-Allow-Origin”标头
资源。起源 'http://本地主机:4200 http://localhost:4200' 因此不允许
使用权。响应的 HTTP 状态代码为 500。
这是我的 Startup 类中的配置方法:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors(builder => builder
.AllowAnyHeader()
.AllowAnyOrigin()
.AllowAnyMethod());
app.UseMvc();
}
如果 CORS 请求被接受,并且 CORS 响应也被接受,为什么客户端不接受发生错误时的异常详细信息?
更新...我根据马库斯的建议实现了一个更详细的版本;但无济于事。当 Web API 中发生未处理的异常时,仅在尝试在 500 响应中返回错误数据的一种情况下,仍然会出现完全相同的 CORS 错误。
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("AllowAllPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddMvc();
services.AddOptions();
services.Configure<AppConfig>(Configuration.GetSection("AppConfig"));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors("AllowAllPolicy");
app.UseMvc();
}
然后,在我的控制器类中:
[EnableCors("AllowAllPolicy")]
public class SqlApiController
{
:
这些都没有帮助。 CORS 一直有效,直到 Web API 出现异常。然后,我得到这个,而不是来自 500 的异常信息:
加载失败http://localhost:64630/api/sql/familiesCollection/create http://localhost:64630/api/sql/familiesCollection/create: 不
请求中存在“Access-Control-Allow-Origin”标头
资源。起源 'http://本地主机:4200 http://localhost:4200' 因此不允许
使用权。响应的 HTTP 状态代码为 500。