为 Web API 1、.net 4.0 启用 CORS 的问题

Sha*_*ant 2 c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

我需要为我的 Web API 启用 CORS,但我无法升级到 Framework 4.5。我尝试将以下内容添加到我的 Web.config 中以查看它是否有效,但没有:

<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Accept,Content-Type,X-Requested-With"/>
Run Code Online (Sandbox Code Playgroud)

我正在从 ajax 调用访问 URL http://localhost:8484/api/values/

并出现以下错误

XMLHttpRequest 无法加载http://localhost:8484/api/values。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问 Origin 'null'。响应具有 HTTP 状态代码 405。

小智 5

我找到了 charanjit singh 这个简单的解决方案。它工作得很好,特别是如果您坚持使用较旧的 Visual Studio 2010 ,在 .Net 4.0 上,当然还有 web api 1。基本上将此功能添加到您的 Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e)

{

    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
    if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods",
                     "GET, POST, PUT, DELETE");
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers",
                     "Content-Type, Accept");
        HttpContext.Current.Response.End();
     }
} 
Run Code Online (Sandbox Code Playgroud)

参考 链接:请注意,您必须滚动到底部评论才能找到答案。 http://www.codeguru.com/csharp/.net/net_asp/using-cross-origin-resource-sharing-cors-in-asp.net-web-api.html