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以及依赖注入的实现和代码演示

简单聊下.NET6 Minimal API的使用方式

详解 .Net6 Minimal API 的使用方式

.Net Minimal API 介绍

javascript Minimal Analytics Snippet

简单聊下.NET6 Minimal API的使用方式