我们有一个Intranet应用程序,我们正在使用AngularJS前端和Web Api后端。它基本上是对现有的ASP.NET/WCF应用程序的重新设计,它只被我们的一些员工使用。带有web api的访问控制允许来源请求
我们打算使用Windows身份验证来强制执行此版本中的某些安全性(旧版本中没有),并且我们在使用Internet Explorer以外的浏览器时遇到了一些问题。例如,Chrome始终会出现401-未经授权的错误。我已经被指示跳过现在的安全功能(是的,我知道,不是一个好主意),所以我禁用了它们,但现在我看到一个错误,当我试图与API交谈(在一个单独的项目),但在Chrome中,而不是在IE中。
XMLHttpRequest无法加载http://localhost:62415/api/Emails。请求的资源上没有“Access-Control-Allow-Origin”标题。因此不允许访问原产地'http://localhost:50900'。响应的HTTP状态码为401.
我们在我们的API项目中启用了CORS,所以我不确定我需要在这里做什么。我们在本地开发中使用本地主机,但在质量保证中使用本地主机,并且这些网站将使用同一域中具有不同子域的URL。
我用我的项目启动类,它有这个方法:
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);
任何帮助表示赞赏。
别t使用ASP.net足以说,但你有什么应该这样做,一些其他的替代品在这里http://enable-cors.org/server_aspnet.html你应该看到一个请求与方法设置为OPTION在真正的GET/POST之前出现在对该请求的响应中时,标题应该指定允许访问控制起源设置为*或任何实际的客户域。 – shaunhusain