Javascript 和 .NET Minimal API 中的 CORS 策略
Posted
技术标签:
【中文标题】Javascript 和 .NET Minimal API 中的 CORS 策略【英文标题】:CORS policy in Javascript and .NET Minimal API 【发布时间】:2021-12-16 12:30:26 【问题描述】:我正在使用纯 javascript 请求 .NET 6 中的 Minimal API,但是当我在浏览器中打开它时,我收到以下消息:
CORS 策略已阻止访问从源“null”在“https://localhost:7252/v1/todos”获取:没有“Access-Control-Allow-Origin”标头出现在请求的资源。不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
我已经在 API 中添加了 CORS 配置,但它不起作用:
通过 JavaScript 调用端点:fetch('https://localhost:7252/v1/todos')
.then(response => response.json()) ...
.NET API 程序配置
builder.Services.AddCors(options => options.AddDefaultPolicy(builder =>
builder.WithOrigins(
"https://localhost:7252/v1/todos",
"https://localhost:7252");
));
app.UseCors();
【问题讨论】:
你在使用 IIS 吗? 【参考方案1】:你可能想稍微扩展一下
app.UseCors(builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
这里是完整的代码示例
public class Startup
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
public void ConfigureServices(IServiceCollection services)
services.AddCors(options =>
options.AddPolicy(name: MyAllowSpecificOrigins,
builder =>
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
);
);
// services.AddResponseCaching();
services.AddControllers();
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors(MyAllowSpecificOrigins);
// app.UseResponseCaching();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
endpoints.MapControllers();
);
Asp Cors Sample
【讨论】:
感谢您的提示 ?? 通过添加此配置可以正常工作:app.UseCors(builder => builder .AllowAnyOrigin());以上是关于Javascript 和 .NET Minimal API 中的 CORS 策略的主要内容,如果未能解决你的问题,请参考以下文章
.NET 6开发minimal api以及依赖注入的实现和代码演示