Javascript和.NET最小API中的CORS策略

yyyllmsg  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(91)

我正在使用纯javascript请求.NET 6中的最小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();
zpgglvta

zpgglvta1#

你可能想把它再延长一点

services.AddCors();
 
 app.UseCors(builder => builder
 .AllowAnyOrigin()
 .AllowAnyMethod()
 .AllowAnyHeader()
);

CORS协议不允许同时指定通配符(任何)来源和凭据(.AllowCredentials())。如果需要支持凭据,请通过列出各个来源配置CORS策略- @methos
这里是完整代码示例

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

相关问题