在全局和控制器范围上EnableCors的区别

本文关键字:EnableCors 区别 范围 全局 控制器 | 更新日期: 2023-09-27 18:08:26

我遵循此页面启用跨域请求。
全局范围内的EnableCors总是有效的。

var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);

但是,控制器范围上的EnableCors将使用请求方法'OPTIONS'失败预飞行请求。

[EnableCors(origins: "*", headers: "*", methods: "*")] 

为了让它工作,我需要添加一个自定义的delegatehandler显示在这个答案,它允许'OPTION'方法。
我在谷歌上搜索过,但没有太多关于差异的细节。有人能给我解释一下它们的区别吗?

在全局和控制器范围上EnableCors的区别

您可以在方法级别应用EnableCors属性,也可以在类级别或全局应用它。应用属性的级别为Web API代码中该级别及以下级别的所有请求配置CORS。

例如,

如果应用于方法级别,该策略将仅应用于该操作的请求,而如果应用于级别,该策略将适用于对该控制器的所有请求。最后,如果全局应用,该策略将适用于所有请求