【问题标题】:ASP.NET Core CORS combining policies; enablecors in controller vs midleware configurationASP.NET Core CORS 组合策略;在控制器与中间件配置中启用 cors
【发布时间】:2019-07-30 17:21:09
【问题描述】:

我正在开发一个 ASP.NET Core 项目,我想在我的应用程序中启用 CORS。我从 ASP.NET Core documentation 开始,我很困惑为什么我们不能将这两种方法结合起来,如下所示:

您可以使用 [EnableCors] 属性将不同的策略应用于控制器/页面模型/操作。当 [EnableCors] 属性应用于 controllers/page-model/action 方法,并且在中间件中启用了 CORS 时,这两个策略都会被应用。我们建议不要合并策略。使用[EnableCors] 属性或中间件,而不是在同一个应用中。

【问题讨论】:

    标签: c# security asp.net-core cors


    【解决方案1】:

    你为什么想要? 结果是:CORS 已启用或未启用(针对一种资源)。

    您可以通过在控制器/操作方法上使用属性语法 ([EnableCors]) 来做到这一点,或者像示例中一样使用 fluent-api-design

    services.AddCors(options => options...);
    

    但您仍然以一种或另一种方式启用或不启用指定资源的 CORS。 您选择哪一种并不重要,取决于您的应用。

    微软建议同时反对这两种方法,因为这是多余的,可能会导致混乱。

    【讨论】:

    • 我试图理解为什么我们不能这样做,知道这些问题有助于避免它们。但在文档中,我无法找到关于两种方式结合时问题的进一步解释。
    • 这不是问题。该文档说“我们建议不要合并”。这是一个避免混淆的建议,因为这将是完全相同功能的冗余定义。
    • 在 startup.cs 中启用 CORS 并使用 enablecors 但不是在我的所有控制器/操作上时,AspNetCore 的行为如何?
    • 如果启用,则启用。这意味着,如果您的启动启用了 CORS,它不会因为不使用该属性而被禁用。
    • @cyptus 但是如何在特定控制器/方法上使用不同的策略?
    猜你喜欢
    • 2021-07-09
    • 2021-12-05
    • 2020-07-09
    • 2020-09-02
    • 2021-07-20
    • 1970-01-01
    • 2020-11-02
    • 2019-05-25
    • 2020-07-16
    相关资源
    最近更新 更多