繁体   English   中英

.Net 5 Web API CORS LocalHost

[英].Net 5 Web API CORS LocalHost

我正在构建 a.Net 5 Web API 并且仅当我在本地(又名 localhost)运行时遇到 CORS 问题。 当我将我的应用程序部署到 Azure 时,我可以从我的 Blazor 应用程序访问我的 API 就好了。

Class Startup.cs

readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

Class:Startup.cs
方法:配置服务

services.AddCors(options =>
{
    //didn't work
    //options.AddDefaultPolicy(builder =>
    //{
    //    builder.SetIsOriginAllowed(origin => new Uri(origin).Host == "localhost");
    //});

    options.AddPolicy(name: MyAllowSpecificOrigins,
                      builder =>
                      {
                          builder.WithOrigins("https://localhost:44373/", "https://myawesomesite")
                          .AllowAnyMethod()
                          .AllowAnyHeader()
                          .AllowCredentials();
                      });
}); 

Class:Startup.cs
方法:配置

app.UseCors(MyAllowSpecificOrigins);

只需从本地主机 url 中删除尾随“/”,然后您可以尝试删除.AllowCredentials() 进行测试。

并使用以下语法:

services.AddCors(o => o.AddPolicy( MyAllowSpecificOrigins,
                      builder =>
                      {
                          builder.WithOrigins("https://localhost:44373", 
                      "https://myawesomesite")
                      .AllowAnyMethod()
                       .AllowAnyHeader();
            }));

并且您的 UseCors 方法应该介于 UseRouting 和 UseAuthourization 之间


app.UseRouting()
....
.....
app.UseCors(MyAllowSpecificOrigins);

....
....
app.UseAuthorization(); // if you need the one

我身边的东西正常工作如下。

Class:Startup.cs

方法:配置服务

services.AddCors(c =>  
  { 
    c.AddPolicy("AllowOrigin", options => options.AllowAnyOrigin());  
  }); 

Class:Startup.cs

方法:配置

app.UseCors(options => options.AllowAnyOrigin());

试试这个,让我知道它是否有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM