C# 如何在asp.net core 3.1中为每种类型的请求启用Cors
如何在asp.net core 3.1中为每种类型的请求启用Cors 我正在跟踪调查,但他们似乎不起作用 注意:我能够实现特定领域的cors,但不是每个领域。例如,我已将以下配置应用于我的项目:C# 如何在asp.net core 3.1中为每种类型的请求启用Cors,c#,asp.net-core,cors,asp.net-core-3.0,asp.net-core-3.1,C#,Asp.net Core,Cors,Asp.net Core 3.0,Asp.net Core 3.1,如何在asp.net core 3.1中为每种类型的请求启用Cors 我正在跟踪调查,但他们似乎不起作用 注意:我能够实现特定领域的cors,但不是每个领域。例如,我已将以下配置应用于我的项目: 在ConfigureServices()中我添加的方法: services.AddCors() 在我添加的Configure()方法中: app.UseCors(builder=> { 建设者 .WithOrigins() .AllowAnyMethod() .AllowAnyHeader() .All
ConfigureServices()中代码>我添加的方法:
services.AddCors()
Configure()
方法中:
app.UseCors(builder=>
{
建设者
.WithOrigins()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});app.UseCors(builder =>
{
builder
.WithOrigins("https://localhost:44361")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
我的问题是如何不受限制地访问每个URL(即域、子域等)的API。应用*不起作用
请帮忙 您需要允许对以下各项执行任何原点操作:
builder.AllowAnyOrigin()
具有AllowCredentials的任何来源
不允许从任何来源发送凭据是出于设计
您可以使用以下方法来解决此问题
builder.SetIsOriginAllowed(=>true)
我不认为这是一个很好的解决方案,因为它消除了useCredentials()的好处
注意
在标头中发送JWT不需要使用凭据。如果您需要在请求中发送Cookie,则此选项适用。允许任何来源并启用useCredentials
会导致安全漏洞,这就是默认情况下不允许的原因
有关更多信息,请阅读
及
这应该对你有好处。忽略MVC部件,我只是为您添加了一个,以确保您的管道顺序是正确的
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors(
options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()
);
app.UseMvc();
}
我尝试了此操作,但出现错误:“CORS协议不允许同时指定通配符(任何)来源和凭据。如果需要支持凭据,请通过列出各个来源来配置CORS策略。”“这是CORS设计的一部分。发送凭据时,您需要指定允许从发送凭据的来源谢谢。我还必须删除.AllowCredentials();在添加builder.AllowAnyOrigin()之后,如您所说。在删除.AllowCredentials()之后,它才能工作;我仍然能够在头中发送JWT令牌,因此我认为在这种情况下不会阻止凭据发送;就我们所知,这是饼干。我更新了我的问题,提供了更多信息和两个有用问题的链接