我有一个。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();