CORS 的这种用法是否正确?
Is this usage of CORS correct?
在 VS2019 调试(IIS Express)API 服务和使用该服务的 Web 应用程序时,我收到“从来源 'apporigin' 访问 'theservice' 处的 XMLHttpRequest 已被 CORS 阻止策略:请求的资源上不存在 'Access-Control-Allow-Origin' header。
启动方法
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddCors();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseCors(options => {
options.AllowAnyOrigin();
});
}
控制器 Class 和获取方法都具有 [EnableCors()]
属性。
对我来说,这似乎是正确的,但我继续收到丢失的来源 header 消息。在这种情况下,我是否正确实施了 CORS?
https://whosebug.com/users/6527049/vivek-nuna评论里有答案。
将 app.UseCors(options => {options.AllowAnyOrigin();});
移动到 app.UseRouting()
之后和 app.UseAuthorization()
之前
正确的配置方法如下所示:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors(options => {
options.AllowAnyOrigin();
});
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
UseCors
必须按正确的顺序调用。它必须放在 UseRouting
之后,UseAuthorization
之前。您可以参考this文档。
并不是每个中间件都需要按照这个确切的顺序进行,但很多都需要。例如:
UseCors
、UseAuthentication
和 UseAuthorization
必须按所示顺序排列。
由于 this 错误,UseCors
目前必须在 UseResponseCaching
之前。
在 VS2019 调试(IIS Express)API 服务和使用该服务的 Web 应用程序时,我收到“从来源 'apporigin' 访问 'theservice' 处的 XMLHttpRequest 已被 CORS 阻止策略:请求的资源上不存在 'Access-Control-Allow-Origin' header。
启动方法
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddCors();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
app.UseCors(options => {
options.AllowAnyOrigin();
});
}
控制器 Class 和获取方法都具有 [EnableCors()]
属性。
对我来说,这似乎是正确的,但我继续收到丢失的来源 header 消息。在这种情况下,我是否正确实施了 CORS?
https://whosebug.com/users/6527049/vivek-nuna评论里有答案。
将 app.UseCors(options => {options.AllowAnyOrigin();});
移动到 app.UseRouting()
之后和 app.UseAuthorization()
正确的配置方法如下所示:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors(options => {
options.AllowAnyOrigin();
});
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
UseCors
必须按正确的顺序调用。它必须放在 UseRouting
之后,UseAuthorization
之前。您可以参考this文档。
并不是每个中间件都需要按照这个确切的顺序进行,但很多都需要。例如:
UseCors
、UseAuthentication
和 UseAuthorization
必须按所示顺序排列。
由于 this 错误,UseCors
目前必须在 UseResponseCaching
之前。