.NET Core CORS策略为何未返回Access-Control-Allow-Origin响应头?
ASP.NET Core CORS 配置详解
咱先把你给出的CORS配置代码格式化好,方便阅读和维护:
builder.Services.AddCors(options => { options.AddPolicy(name: "MyPolicy", policy => { policy.WithOrigins( "http://example.com", "http://www.contoso.com", "https://cors1.azurewebsites.net", "https://cors3.azurewebsites.net", "https://localhost:56055", "https://localhost:5001" ) .WithMethods("PUT", "DELETE", "GET"); }); });
这段代码的核心作用解析:
- 首先通过
builder.Services.AddCors()向DI容器注册CORS服务 - 定义了一个名为
MyPolicy的CORS策略,指定了两个关键规则:WithOrigins:明确列出允许跨域请求的源(域名+端口),只有这些来源的前端请求会被服务器接受WithMethods:限制允许的HTTP请求方法,这里只开放了PUT、DELETE和GET三种
几个实用补充提示:
- 配置完策略后,一定要在中间件管道中启用CORS,比如在
Program.cs里加上app.UseCors("MyPolicy");(注意要放在UseRouting之后,UseAuthorization之前) - 如果生产环境需要允许动态源,或者不想硬编码所有源,可以考虑用配置文件读取,或者结合
SetIsOriginAllowed方法自定义判断逻辑 - 如果需要允许自定义请求头,可以在策略中追加
.WithHeaders("自定义头名称"),或者用.AllowAnyHeader()(生产环境按需使用) - 要是你提到的响应头截图显示CORS相关字段未正确返回,先检查中间件是否正确启用,以及请求的源/方法是否在配置的范围内
内容的提问来源于stack exchange,提问作者lightbulb04
相关产品推荐
相关产品推荐

