我觉得我花了很多时间试图让它发挥作用 . 关于这个主题有很多有用的SO答案:

但是......没有人真正解决了我我觉得是时候说出我自己的问题了,解释一下我做了什么,我遇到的问题是我的问题 .

  • 通过NuGet安装 Microsoft.AspNet.WebApi.Cors

  • 在我的WebAPI控制器上添加了属性 [EnableCors("http://localhost:PORT", "*", "GET,POST,DELETE,OPTIONS")] .

GET请求在这一点上起作用,就像一个魅力 .

当我执行PUT或DELETE时,pre-flight request失败 . 我在客户端浏览器中收到内部服务器错误响应 . 事实证明OPTIONS请求失败,因为我的web api控制器中没有选项方法 .

通过添加options方法如下:

public HttpResponseMessage Options()
{
    var response = new HttpResponseMessage
    {
        StatusCode = HttpStatusCode.OK
    };
    return response;
}

PUT和DELETE请求确实有效,欢呼!

我不确定在哪里绘制开发人员与框架的责任线,但感觉我不应该太在意OPTIONS方法 . Must I really explicitly specify this method in order for PUT, DELETE, OPTIONS to work?

谢谢大家的帮助!