我觉得我花了很多时间试图让它发挥作用 . 关于这个主题有很多有用的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?
谢谢大家的帮助!