从 IONIC (Angular) 应用程序使用 ASP.NET Core 1.1 Web API 时出现 CORS 错误
CORS error when consuming ASP.NET Core 1.1 Web API from IONIC (Angular) app
我创建了一个 ASP.NET Core 1.1 Web API,它被 Angular2 (IONIC) 应用程序使用。在项目开始时,我们遇到了 CORS 错误,在对 Web API 进行了一些修改后,我们得以解决。今天早上,我用过去一周所做的一些更改更新了我们的实时网络 API,出于某种原因,我们再次遇到 CORS 错误(当 Angular 应用程序使用实时网络 API - 当我们从 LAN 上的另一台 PC 连接到本地主机上的 Web API 运行 时,它工作正常)。错误是:
XMLHttpRequest 无法加载 http://inspections.propworx.co.za/api/inspections. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.100:8100' 因此不允许访问。
我的网站中有以下内容 API Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("SiteCorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
...
}
还有这个:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors("SiteCorsPolicy");
...
}
在这两种情况下,它们分别在 services.AddMvc() 和 app.UseMvc 之前。但它仍然不起作用。我试过添加
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("SiteCorsPolicy"));
});
在 ConfigureServices 中,就在 services.AddCors 之后,无济于事。
我尝试添加:
[EnableCors("SiteCorsPolicy")]
到我的控制器的顶部,但也没有帮助。
这是有效的,我不知道我能做什么,但它现在不工作了:/任何人有想法吗?谢谢...
我 运行 几天前遇到了类似的问题,这是我解决它的方法。从 angular 调用网络 API 时,请确保在 headers.
下方添加
let headers = new Headers({'Content-Type': 'application/json'});
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Accept', 'application/json');
问题是没有 Web.config 文件... ASP.Net Core 似乎没有为 Web API 生成一个文件,但这对于 CORS 是必需的.. .
我创建了一个 ASP.NET Core 1.1 Web API,它被 Angular2 (IONIC) 应用程序使用。在项目开始时,我们遇到了 CORS 错误,在对 Web API 进行了一些修改后,我们得以解决。今天早上,我用过去一周所做的一些更改更新了我们的实时网络 API,出于某种原因,我们再次遇到 CORS 错误(当 Angular 应用程序使用实时网络 API - 当我们从 LAN 上的另一台 PC 连接到本地主机上的 Web API 运行 时,它工作正常)。错误是:
XMLHttpRequest 无法加载 http://inspections.propworx.co.za/api/inspections. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.100:8100' 因此不允许访问。
我的网站中有以下内容 API Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("SiteCorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
...
}
还有这个:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors("SiteCorsPolicy");
...
}
在这两种情况下,它们分别在 services.AddMvc() 和 app.UseMvc 之前。但它仍然不起作用。我试过添加
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("SiteCorsPolicy"));
});
在 ConfigureServices 中,就在 services.AddCors 之后,无济于事。 我尝试添加:
[EnableCors("SiteCorsPolicy")]
到我的控制器的顶部,但也没有帮助。
这是有效的,我不知道我能做什么,但它现在不工作了:/任何人有想法吗?谢谢...
我 运行 几天前遇到了类似的问题,这是我解决它的方法。从 angular 调用网络 API 时,请确保在 headers.
下方添加let headers = new Headers({'Content-Type': 'application/json'});
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Accept', 'application/json');
问题是没有 Web.config 文件... ASP.Net Core 似乎没有为 Web API 生成一个文件,但这对于 CORS 是必需的.. .