【发布时间】:2016-04-16 20:37:00
【问题描述】:
我有一个使用 OWIN 和 Web Api 2 控制器的 REST API。我需要公开一个Authenticate 方法,但仅限于来自托管AngularJS 应用程序的网络服务器(与REST API 相同的主机)的请求,这意味着据我所知,我只需要为该方法禁用CORS .
我的ApiController 类的示例如下(RequireHttpsAttribute 强制执行 SSL URL 请求方案):
[Authorize]
[RequireHttps]
[RoutePrefix("api/v1")]
public class RestController : ApiController
{
[AllowAnonymous, Route("Authenticate")]
public async Task<IHttpActionResult> Authenticate([FromBody] AuthenticationModel authenticationModel)
{ ... }
[HttpGet, Route("SecureData/{id:int}")]
public async Task<IHttpActionResult> GetSecureData(int id)
{ ... }
[HttpPost, Route("SecureData")]
public async Task<IHttpActionResult> CreateSecureData([FromBody] SecureDataModel data)
{ ... }
[HttpPut, Route("SecureData")]
public async Task<IHttpActionResult> UpdateSecureData([FromBody] SecureDataModel data)
{ ... }
}
OWIN CORS 配置似乎是通过 CorsPolicy 类和 OWIN Startup 类中的 app.UseCors(CorsPolicy.AllowAll) 全面应用策略。
我找到的资源(包括其他SO问题,例如this one)指出OWIN CORS和ASP.NET CORS互不兼容,所以看起来我不能简单地装饰使用 DisableCorsAttribute 的方法(我目前在我的项目中也没有任何 ASP.NET 依赖项,因此我将为该单个属性添加所有依赖项!)。
我的问题是:如何在 OWIN 中为单个 Web Api 2 控制器方法禁用 CORS?
【问题讨论】:
-
不会让 cors 在行动层面更容易?
-
你能详细说明你的意思吗?
标签: c# cors asp.net-web-api2 owin