gpt4 book ai didi

c# - 有没有办法在 .NET Core 中的 CorsPolicy 上使用 'AllowAnyOrigin' 属性?

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:57 25 4
gpt4 key购买 nike

我目前正在 .Net Core 应用程序中开发集成 Cors。我之前在完整的 .NET Framework (4.6.1) 中处理过 Cors,它能够在给定的 CorsPolicy 中设置 AllowAnyOrigin 属性。

如前所述,我已经编写了一个 .NET Core WebApi,我正在尝试将 Cors 实现到其中。我从存储在我的 appSettings.json 中的 AppSetting 中读取它,它可以是三件事:

  • 如果 appsetting 设置为星号,那么我希望看到 AllowAnyOrigin 属性,就像我在完整的 .NET 框架中所做的那样。 (这就是我的问题所在。)
  • 如果 appsetting 设置为逗号分隔的字符串,例如 https://example.com, https://test.com,则会根据需要将其应用于策略。
  • 如果应用设置已被注释掉或保留为空,那么我将从 Azure 表存储中读取行列表以提供给定来源的列表。

下面是我之前处理过的完整 .NET 框架的示例。

            var origins = ConfigurationManager.AppSettings[KeyCorsAllowOrigin];

switch (origins)
{
case null:
_corsPolicy.Origins.Clear();
foreach (var item in new StorageConfigurationManager().GetRowKeys())
{
_corsPolicy.Origins.Add("https://" + item);
}
break;
case "*":
_corsPolicy.AllowAnyOrigin = true;
break;
default:
_corsPolicy.AllowAnyOrigin = false;
if (!string.IsNullOrWhiteSpace(origins)) AddCommaSeparatedValuesToCollection(origins, _corsPolicy.Origins);
break;
}

我认为我可以在 .NET Core 和 Microsoft.AspNetCore.Cors.Infrastructure 包中复制此功能,但似乎 Microsoft 限制了对设置属性的访问,并且只能是阅读自。

有谁知道有什么方法可以设置吗?

我知道您可以在管道内构建 CorsPolicy,然后使用 .AllowAnyOrigin(),但我目前正在使用自定义 Cors 中间件来帮助我的自定义策略。

最佳答案

有一篇很棒的文章叫做 Enabling CORS in ASP.NET Core我将为您总结有趣的部分:

要在您的资源上只允许 GET 方法,您可以在定义 CORS 策略时使用 WithMethods 方法:

services.AddCors(options =>
{
options.AddPolicy("AllowOrigin",
builder => builder.WithOrigins("http://localhost:55294")
.WithMethods("GET"));
});

如果您需要允许任何来源访问资源,您将使用 AllowAnyOrigin 而不是 WithOrigins:

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

关于c# - 有没有办法在 .NET Core 中的 CorsPolicy 上使用 'AllowAnyOrigin' 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54235350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com