Angularjs 使用web api访问控制允许原始请求

Angularjs 使用web api访问控制允许原始请求,angularjs,asp.net-web-api2,Angularjs,Asp.net Web Api2,我们正在使用AngularJS前端和WebAPI后端开发一个intranet应用程序。它基本上是对现有ASP.NET/WCF应用程序的重新设计,只供少数员工使用 我们本来打算使用Windows身份验证在这个版本(旧版本没有)中实施一些安全性,但在使用Internet Explorer以外的浏览器时遇到了一些问题。例如,Chrome总是返回401未经授权的错误 我被指示暂时跳过安全功能(是的,我知道,这不是一个好主意),所以我禁用了它们,但现在我在尝试与API对话时(在一个单独的项目中)看到了一个

我们正在使用AngularJS前端和WebAPI后端开发一个intranet应用程序。它基本上是对现有ASP.NET/WCF应用程序的重新设计,只供少数员工使用

我们本来打算使用Windows身份验证在这个版本(旧版本没有)中实施一些安全性,但在使用Internet Explorer以外的浏览器时遇到了一些问题。例如,Chrome总是返回401未经授权的错误

我被指示暂时跳过安全功能(是的,我知道,这不是一个好主意),所以我禁用了它们,但现在我在尝试与API对话时(在一个单独的项目中)看到了一个错误,但是在Chrome中,而不是在IE中

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“”。响应的HTTP状态代码为401

我们已经在API项目中启用了CORS,所以我不确定我需要在这里做什么。我们在本地开发中使用localhost,但在QA和生产中,这些站点将在同一个域中使用具有不同子域的URL

我在项目中使用Startup类,它有以下方法:

public void Configuration(IAppBuilder app)
    {
        var config = new HttpConfiguration();

        WebApiConfig.Register(config);
        app.UseCors(CorsOptions.AllowAll);
        app.UseWebApi(config);
    }
我一定错过了什么。我们最初在WebApiConfig中有此代码,但恢复它并没有修复任何问题:

var cors = new EnableCorsAttribute("*", "*", "*");

cors.SupportsCredentials = true;
config.EnableCors(cors);
感谢您的帮助。

无需添加:

var cors=新的EnableCorsAttribute(“,”,“*”); 配置使能cors(cors)

出于安全原因,浏览器限制从脚本中启动的跨源HTTP请求。 例如,XMLHttpRequest遵循相同的源策略。因此,使用XMLHttpRequest的web应用程序只能向自己的域发出HTTP请求。 但是,您可以忽略它:

  • 在nuget中安装Microsoft.Owin.Cors包
  • 在Startup.cs中添加此方法

不要使用ASP.net来说明问题,但您所拥有的应该是这样做的,在这里您应该看到一个方法设置为OPTION的请求,该请求在响应该请求时在实际GET/POST之前发出。标头应指定访问控制允许源设置为*或任何您实际的客户端域。
    public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
        }