Web Api 2、OWIN 和 Identity Server 的 CORS 配置问题
Problem on CORS configuration with Web Api 2, OWIN and Identity Server
我在同一域下有几个 Web 应用程序,所有应用程序都使用独立的 Identity Server 3 应用程序进行登录。在测试环境下,每一个都在同一个域下(http://192.168.100.1,或通过 dns http://companyServer)。
最近一个应用需要向另一个应用请求一些数据,在Visual Studio调试时发现如下错误:
Cross-Origin 请求被阻止:同源策略不允许读取位于 http://companyServer:60000/MyApp/Api/Company/Info?parameter=123 的远程资源。 (原因:CORS header '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。
我也查看了我的Login Server App,关于CORS有如下代码:
public class CompanyCorsPolicyService : DefaultCorsPolicyService
{
public CompanyCorsPolicyService()
{
base.AllowAll = true;
}
}
正在项目的 Startup.cs 上调用此方法。
据我所知,无论来源如何,我环境的每一端都应该启用完整的 CORS 访问。但是 header 仍然不见了。
我在互联网上尝试了很多解决方案:
Using "config.EnableCors" instead of "app.UseCors"
Overriding GrantResourceOwnerCredentials,
我也尝试在 Web.Config 上手动设置一些与 CORS 相关的 headers,但我无法在 SO 上找到具体问题。
我不认为身份服务器与这个问题有关,但由于这是我的环境和我找到的解决方案之间的差异,我决定也把它放在这里。
有什么想法吗?
OPTIONSVerbHandler
可能会拦截所有 OPTIONS
(CORS pre-flight) 请求。
尝试禁用它,以便 ASP.Net 可以处理这些请求。
我在同一域下有几个 Web 应用程序,所有应用程序都使用独立的 Identity Server 3 应用程序进行登录。在测试环境下,每一个都在同一个域下(http://192.168.100.1,或通过 dns http://companyServer)。
最近一个应用需要向另一个应用请求一些数据,在Visual Studio调试时发现如下错误:
Cross-Origin 请求被阻止:同源策略不允许读取位于 http://companyServer:60000/MyApp/Api/Company/Info?parameter=123 的远程资源。 (原因:CORS header '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。
我也查看了我的Login Server App,关于CORS有如下代码:
public class CompanyCorsPolicyService : DefaultCorsPolicyService
{
public CompanyCorsPolicyService()
{
base.AllowAll = true;
}
}
正在项目的 Startup.cs 上调用此方法。
据我所知,无论来源如何,我环境的每一端都应该启用完整的 CORS 访问。但是 header 仍然不见了。
我在互联网上尝试了很多解决方案:
Using "config.EnableCors" instead of "app.UseCors"
Overriding GrantResourceOwnerCredentials,
我也尝试在 Web.Config 上手动设置一些与 CORS 相关的 headers,但我无法在 SO 上找到具体问题。
我不认为身份服务器与这个问题有关,但由于这是我的环境和我找到的解决方案之间的差异,我决定也把它放在这里。
有什么想法吗?
OPTIONSVerbHandler
可能会拦截所有 OPTIONS
(CORS pre-flight) 请求。
尝试禁用它,以便 ASP.Net 可以处理这些请求。