*仅*在从 Angular 6 调用 ASP.NET Core Web API 的服务器异常上获取 CORS 错误

2024-03-09

我已经安装了 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。


据我所知,您对 CORS 配置没有任何具体限制,并且允许“全部”。在这种情况下,这可以帮助你。

我还看到您使用 [EnableCors...] 属性装饰控制器,因此出现错误时,它可能会脱离当前控制器,并且错误会在“其他地方”处理,这可能会导致属性超出范围范围...

我使用了一种更简单的方法,但允许 CORS 并且错误也会“传输”到客户端。

using Microsoft.Owin.Cors;

namespace Test
{
    public partial class Startup
    {

        public void ConfigureAuth(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);

然后删除与 CORS 相关的所有其他内容,这对于全局启用的 CORS 来说足够了,并且允许所有来源(即 *)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

*仅*在从 Angular 6 调用 ASP.NET Core Web API 的服务器异常上获取 CORS 错误 的相关文章

  • 验证/操作多租户 Web API 中的输入参数

    假设我们有一个多租户博客应用程序 该应用程序的每个用户可能拥有多个由该服务托管的博客 我们的 API 允许读取和写入博客文章 在某些情况下 指定 BlogId 是可选的 例如 获取用 ASP NET 标记的所有帖子 api posts ta
  • OWIN OnSendingHeaders 回调 - 读取响应正文

    这个问题与优秀有关answer https stackoverflow com a 17513249 1709870由优素福 我爱OnSendingHeaders打回来 我现在可以添加响应标头 而不必担心切换流 无论如何 这是我的问题 是否
  • 自定义模型绑定器未从 Swagger UI 调用

    我在我的 WebApi 项目中使用 Net Framework 4 6 1 和 Swashbuckle 版本 5 3 2 Swagger UI 没有提供将输入作为请求正文发送到使用自定义模型绑定程序的 POST Api 的选项 使用型号 M
  • 通过查询字符串传递“Bearer”时 SignalR 身份验证失败

    我想在 SignalR 中启用身份验证 而服务器托管在 ASP NET WebAPI 中 我使用 OAuth Bearer 身份验证 客户端是 AngularJS 在客户端 我最初通过 HTTP 标头传递 Bearer 令牌 它与 WebA
  • Web Api FromBody 在 Web 客户端中为空

    您好 我想通过 Web api 控制器中的 body 变量始终为 null 从 C 客户端调用 Web Api 方法 怎样设置才正确呢 客户端 IFileService imgService new ImageServiceBll var
  • 向 ASP.NET WebApi 2.2 添加身份验证

    我创建了一个 WebApi 2 2 项目 来自一个空的新 ASP NET 项目 来证明一些实现概念 现在我想向其中添加身份验证 我注意到在新的 WebApi 应用程序上添加身份验证的唯一方法是使用模板之一 在我的例子中是 VS 2013 是
  • 无法构造 String 类型

    我正在使用 Web api 和 Unity 并且在尝试打开默认 帮助 区域时收到以下错误 InvalidOperationException The type String cannot be constructed You must co
  • Autofixture 和 WebApi 控制器

    我正在使用 AutoFixture 尝试测试 WebApi 站点的控制器 我正在将 AutoData 功能与 Moq 一起使用 如上所述普洛的博客 http blog ploeh dk 2010 10 08 AutoDataTheories
  • HttpClient 响应 ReadAsAsync() 未完全反序列化对象

    我正在尝试使用 Web API 客户端库来使用 Web 服务 我的问题是 当提交函数使用 POST 方法时 ReadAsAsync 似乎不想完全反序列化返回的对象 如果我得到字符串形式的响应并手动解串它就可以了 我收到一条 apmsgMes
  • 扩展授权属性

    我实施了 CustomAuthorization 属性基于 Authorize 属性 我的属性如下所示 public class CustomAuthorizeAttribute AuthorizeAttribute public eUse
  • 从 mvc web api httpresponse 生成 csv 并通过 angularjs 接收以供下载

    我正在尝试从我的 Web api 生成一个 CSV 文件并通过 angularjs 接收该文件 我有一个如下所示的 API 控制器 HttpPost public HttpResponseMessage GenerateCSV FieldP
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • Asp.net Identity,生成 WebApi 令牌 OAuthGrantResourceOwnerCredentialsContext - 无法使用 Unity 访问 UserManager

    我正在尝试设置一个项目结构 以便拥有 WebApi WebUI 和域层 我已将所有 Asp Net Identity 对象移至 Domain 层 并在此处设置了 ApplicationContext 继承自 IdentityContext
  • 使用 HttpClient 从 webapi 消费 xml

    我使用 WebClient 从 Restfull 服务 net web api 获取 Xml 对象 一切都运行良好 using WebClient client new WebClient client Encoding UTF8Encod
  • ASP.NET Web Api 的事件发布者

    我已经开始使用微服务 我需要创建一个事件发布机制 我计划使用 Amazon SQS 这个想法很简单 我将事件存储在与聚合相同的事务中的数据库中 如果用户更改他的电子邮件 事件UserChangedEmail将被存储在数据库中 我还有事件处理
  • 本地权威声明和外部提供商声明的混淆

    我正在创建一个简单的 WebApi 它允许用户与 Facebook 连接 当我从 facebook 获取 accessToken 时 我调用 RegisterExternal 创建 Asp Net Identity 记录并存储令牌中的声明
  • Web API 缓存 - 如何使用分布式缓存实现失效

    我有一个 API 目前不使用任何缓存 我确实有一个正在使用的中间件 它可以生成缓存标头 Cache Control Expires ETag Last Modified 使用https github com KevinDockx HttpC
  • Web API 复杂参数属性均为 null

    我有一个 Web API 服务调用可以更新用户的首选项 不幸的是 当我从 jQuery ajax 调用中调用此 POST 方法时 请求参数对象的属性始终为 null 或默认值 而不是传入的值 如果我使用 REST 客户端调用相同的方法 我使
  • 请求的资源不支持 HTTP 方法“GET”

    我的路线配置正确 并且我的方法具有装饰标签 我仍然收到 请求的资源不支持 HTTP 方法 GET 消息 System Web Mvc AcceptVerbs GET POST System Web Mvc HttpGet public st
  • 寻找在 Ruby on Rails 中构建安全 REST API 的建议

    我正开始为我正在从事的项目构建 REST API 这促使我对使用 RoR 构建 API 的最佳方法进行了一些研究 我很快发现 默认情况下 模型是向世界开放的 只需在 URL 末尾添加 xml 并传递适当的参数即可通过 URL 进行调用 那么

随机推荐