我正在使用基于OWIN的ASP.NET Web API 2应用程序并尝试设置CORS。该应用程序使用一些具有自己的内部CORS处理的自定义处理,但我们有一些需要CORS配置的标准API控制器。
问题是我无法使用每个控制器 CORS配置。我需要为特定控制器启用内置CORS。但是我无法让[EnableCors]
工作。
我已经:
Microsoft.AspNet.WebApi.Cors
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配置的参数,但在使用时无参数版本属性。
我的操作员错误,但是我把它留在这里以防其他人遇到这个愚蠢的错误。