Javascript 和 .NET Minimal API 中的 CORS 策略

Ass*_*ang 6 .net javascript api cors

我正在使用纯 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()) ...
Run Code Online (Sandbox Code Playgroud)
  • .NET API 程序配置

builder.Services.AddCors(options => options.AddDefaultPolicy(builder => 
{ 
    builder.WithOrigins(
        "https://localhost:7252/v1/todos",
        "https://localhost:7252");
}));

app.UseCors();

Run Code Online (Sandbox Code Playgroud)

Jon*_*mes 9

你可能想延长一点

\n
 services.AddCors();\n \n app.UseCors(builder => builder\n .AllowAnyOrigin()\n .AllowAnyMethod()\n .AllowAnyHeader()\n);\n
Run Code Online (Sandbox Code Playgroud)\n
\n

CORS 协议不允许.AllowCredentials()同时指定通配符(任何)来源\n和凭据 ( )。如果需要支持凭据,则通过列出\每个来源来配置 CORS 策略 \xe2\x80\x93 @methos

\n
\n

这是完整的代码示例

\n
public class Startup\n{\nreadonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";\n\npublic void ConfigureServices(IServiceCollection services)\n{\n    services.AddCors(options =>\n    {\n        options.AddPolicy(name: MyAllowSpecificOrigins,\n                          builder =>\n                          {\n                              builder.WithOrigins("http://example.com",\n                                                  "http://www.contoso.com");\n                          });\n    });\n\n    // services.AddResponseCaching();\n    services.AddControllers();\n}\n\npublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n    if (env.IsDevelopment())\n    {\n        app.UseDeveloperExceptionPage();\n    }\n\n    app.UseHttpsRedirection();\n    app.UseStaticFiles();\n    app.UseRouting();\n\n    app.UseCors(MyAllowSpecificOrigins);\n\n    // app.UseResponseCaching();\n\n    app.UseAuthorization();\n\n    app.UseEndpoints(endpoints =>\n    {\n        endpoints.MapControllers();\n    });\n}\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Asp Cors 样本

\n

  • 感谢您的提示它通过添加此配置来工作: app.UseCors(builder => builder .AllowAnyOrigin()); (3认同)
  • 请注意:CORS 协议不允许同时指定通配符(任何)来源和凭据。如果需要支持凭据,请通过列出各个来源来配置 CORS 策略 (3认同)