这让我很疯狂,如果它重复,我会道歉,但我已经阅读了所有其他的WebAPI / CORS问题,并且找不到任何有效的配置。
我在.NET 4.6.1上有一个运行完美的WebAPI 2项目 - 控制器全部初始化等等。我可以直接调用不同的操作,一切都很好。
但是,当我尝试从其他网站调用API时,我知道我需要使用CORS启用此功能,否则我会收到500服务器错误/飞行前错误。
所以我安装了 System.Web.Http.Cors 并按照 WebApiConfig 中的指示执行了此操作:
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
我希望所有ApiControllers和操作都能响应OPTIONS请求。我可以看到我的ajax请求发出OPTIONS请求,但是我从WebAPI收到内部服务器错误:
Request URL:http://localhost:55579/api/event?start=2017-06-01&end=2017-06-30
Request Method:OPTIONS
Status Code:500 Internal Server Error
Remote Address:[::1]:55579
Referrer Policy:no-referrer-when-downgrade
...并通过Postman进行直接OPTIONS调用给了我:
{
"$id": "1",
"message": "The requested resource does not support http method 'OPTIONS'."
}
我也尝试将该属性添加到我的控制器中,但这也没有效果。
[RoutePrefix("api/event")]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class EventController : ApiController
我在这里缺少什么?
答案 0 :(得分:2)
您还需要在web.config中添加相应的http标头:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
</customHeaders>
</httpProtocol>