如何解决这个CORS问题?(.. NET Web API)



我有一个。net Core Web API运行在http://localhost:5001上。我从另一个web应用程序调用这些服务(这是运行在http://localhost:5004)我在浏览器中看到了错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:5000/api (Reason: CORS header ‘Access-Control-Allow-Origin’ missing). Status code: 405.

我把下面的代码在Startup.cs在Web API

app.UseCors(
options => options.WithOrigins("http://localhost:5004/", "https://localhost:5004/").AllowAnyMethod()
);

这次也发生了错误,但是代码是205。

第三次在选项中删除'/':

app.UseCors(
options => options.WithOrigins("http://localhost:5004", "https://localhost:5004").AllowAnyMethod()
);

错误仍然存在,但这次没有状态码。

如果你看一下文档,他们所有的例子都把规则放在AddCors方法中,而不是UseCors方法中。

所以不用

app.UseCors(
options => options.WithOrigins("http://localhost:5004", "https://localhost:5004").AllowAnyMethod()
);

后试
string myPolicy = "my_policy";
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors(options=>{
options.AddPolicy(myPolicy,policy=>{
policy.WithOrigins("http://localhost:5004", "https://localhost:5004");
});
});
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseCors(myPolicy);
app.UseAuthorization();
app.MapRazorPages();
app.Run();

使用这个。你还要加上最后一个条件。AllowAnyHeader.

app.UseCors(
options => options
.WithOrigins("http://localhost:5004", "https://localhost:5004")
.AllowAnyMethod().
.AllowAnyHeader());

Startup.cs中的配置直到。net Core 5。在Program.cs中从6开始

ConfigureServices中添加以下内容

services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
{
policy.WithOrigins("https://localhost:5005",
"https://localhost:5000",
"https://localhost:3011",
"http://localhost:3011")
.AllowAnyHeader()
.AllowAnyMethod();
});
});

中添加以下配置

app.UseCors();

最新更新