我在同一域下有几个web应用程序,它们都使用独立的Identity Server 3应用程序进行登录。在测试环境下,每一个都在同一个域下(http://192.168.100.1,或通过dnshttp://companyServer)。
最近,一个应用程序需要从另一个应用请求一些数据,我在Visual Studio上调试时发现了以下错误:
阻止跨来源请求:同源策略不允许读取上的远程资源http://companyServer:60000/MyApp/Api/Company/Info?parameter=123.(原因:CORS标头"Access Control Allow Origin"不存在(。
我们有一个中央库负责在我们的系统上配置Web API,它有以下内容(以及其他内容(:
public static IAppBuilder UseCebiUtilWebApi(this IAppBuilder app, CebiWebApiOptions options)
{
Logger.Debug("Configuring Web API");
app.UseCors(CorsOptions.AllowAll);
...
}
使用相同的方法,我们还配置Identity Server。
我还检查了我的登录服务器应用程序,有以下关于CORS的代码:
public class CompanyCorsPolicyService : DefaultCorsPolicyService
{
public CompanyCorsPolicyService()
{
base.AllowAll = true;
}
}
该方法在项目的Startup.cs.上调用
据我所知,我的环境的每一端都应该能够完全访问CORS,无论其来源如何。但标题仍然不见了。
我在互联网上尝试了很多解决方案:
使用";配置。EnableCors";而不是";应用程序。UseCors";
覆盖GrantResourceOwnerCredentials,
我也尝试过在Web.Config上手动设置一些与CORS相关的标题,但在SO.上找不到具体的问题
我不认为身份服务器与这个问题有关,但由于这是我的环境和我找到的解决方案之间的区别,我决定把它也放在这里。
有什么想法吗?
OPTIONSVerbHandler
可能正在拦截所有OPTIONS
(CORS飞行前(请求。
请尝试禁用它,以便ASP.Net可以处理这些请求。