ASP.NET Web API:如何将OWIN Cors设置为不在全局范围内处理特定的API控制器

时间:2018-04-12 05:14:25

标签: asp.net-web-api owin

我正在使用基于OWIN的ASP.NET Web API 2应用程序并尝试设置CORS。该应用程序使用一些具有自己的内部CORS处理的自定义处理,但我们有一些需要CORS配置的标准API控制器。

问题是我无法使用每个控制器 CORS配置。我需要为特定控制器启用内置CORS。但是我无法让[EnableCors]工作。

我已经:

  • 添加了Microsoft.AspNet.WebApi.Cors
  • 将[EnableCors]添加到我的控制器
  • 确保我的请求中有Origin

控制器代码:

EnableCors(origins: "*",headers: "*", methods: "*", SupportsCredentials = true)]
public class RawUploadController : ApiController

代码编译正常。但是当我点击端点时,我没有得到CORS标题。

如果我添加OWIN CORS包并更改代码以使用OWIN CORS实现app.UseCors(CorsOptions.AllowAll),一切都按预期工作,但我无法控制哪些请求使用CORS - 现在每个请求都会触发CORS头。这个问题是,这会影响我们的自定义处理逻辑(它自己进行CORS处理),并且这些组件上的CORS头文件加倍,这是不正确的。

所以......

问题是如何为OWIN下托管的WebAPI正确设置CORS以在每个控制器的基础上工作?

更新

问题是我在启动时没有启用CORS。

我仍然需要以下内容:

    public static void Register(HttpConfiguration config)
    {
        config.EnableCors();

        ...
    }

根据文档看起来config.EnableCors()意味着与全局配置一起使用,因为您可以传递全局CORS配置的参数,但在使用时无参数版本属性

我的操作员错误,但是我把它留在这里以防其他人遇到这个愚蠢的错误。

0 个答案:

没有答案